Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
АТерентьев
21 / 20 / 1
Регистрация: 16.10.2009
Сообщений: 947
#1

Ссылки - C++

16.06.2010, 12:17. Просмотров 514. Ответов 6
Метки нет (Все метки)

Для меня вроде понятно что означает конструкция
C++
1
int* a;
создается указатель на целую переменную.
А что означает конструкция
C++
1
int& a;
?
Эта конструкция используется, в частности, для возврата ссылки на переменную
C++
1
int& f();
Спасибо!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2010, 12:17     Ссылки
Посмотрите здесь:

Зачем нужны rvalue ссылки, если есть универсальные ссылки - C++
Читаю книгу Скотта Мэйерса... Что-то я совсем запутался с этими rvalue ссылками. Я не пойму, зачем нужны rvalue ссылки, если есть...

Ссылки - C++
Здравствуйте. Если я задаю матрицу int **m=new int*; for (int i=0;i<h;i++) m=new int; то могу ли я обращаться и...

ссылки - C++
как здесь привести к интовому виду,чтобы выдавало 100? # include <iostream> using namespace std; void f(int &i) { i = 100;...

Ссылки в С++ - C++
void swap(int& i, int& j) { int tmp = i; i = j; j = tmp; } int main() { int x, y;

Ссылки - C++
Hi all Нельзя возвращать ссылку, если возвращаемое значение является локальной переменоой как здесь, потому что локальные переменные...

Ссылки - C++
Хотел бы узнать как функция Struk & Function() возвращает значения например что бы код весь не писать скажу что объявлен класс struk...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,927
Завершенные тесты: 1
16.06.2010, 19:27     Ссылки #2
Ссылка - своеобразный аналог указателя. Отличается тем, что не может изменять своё значение (всегда указывает на один и тот же объект) и не требует разыменования, обладая тем же синтаксисом, что и объект, на который она ссылается (то есть, int& можно применять в тех же контекстах и точно таким же образом, что и int). Применение ссылок удобно само по себе, и к тому же позволяет компилятору производить разнообразные оптимизации.
АТерентьев
21 / 20 / 1
Регистрация: 16.10.2009
Сообщений: 947
16.06.2010, 22:36  [ТС]     Ссылки #3
В задаче ввода и обхода бинарного дерева используются конструкции -
C++
1
2
3
4
5
6
7
8
9
10
11
12
class tree{
      char info;
      tree *llink;
      tree *rlink;
public:
      tree *root;
      tree(){root=NULL;};
      
      void in(tree *&t);                            // ввод дерева рекурсивный
      void btree1(tree *t);                       // обход дерева рекурсивный
 
};
Нельзя ли пояснить почему в процедуре ввода дерева используется *&t, а при обходе
дерева - *t ?
Спасибо!
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
16.06.2010, 23:34     Ссылки #4
Цитата Сообщение от АТерентьев Посмотреть сообщение
Нельзя ли пояснить почему в процедуре ввода дерева используется *&t, а при обходе
дерева - *t ?
без самой процедуры трудно что-то пояснить
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,927
Завершенные тесты: 1
17.06.2010, 19:09     Ссылки #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Наиболее вероятное объяснение - процедура in изменяет указатель, который ей передают. С точки зрения идеологии правильнее было бы всё-таки описать её как tree* in(tree* t);
АТерентьев
21 / 20 / 1
Регистрация: 16.10.2009
Сообщений: 947
18.06.2010, 00:00  [ТС]     Ссылки #6
Текст программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class tree{
      char info;
      tree *llink;
      tree *rlink;
public:
      tree *root;
      tree(){root=NULL;};
      
      void in(tree *&t);
      void btree1(tree *t);
};
 
void tree::in(tree *&t){
  char c;
  cin>>c;
  if(c!='.')
  {
     t= new tree;
     t->info=c;
     in(t->llink);
     in(t->rlink);
  }     
  else 
      t=NULL;
}
 
void tree::btree1(tree *t)
{ 
     if(t!=NULL)
     {
       btree1(t->llink);
       cout<<t->info;
       btree1(t->rlink);
     }
}
 
int main()
{
    tree t;
    t.in(t.root);
    t.btree1(t.root);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2010, 08:29     Ссылки
Еще ссылки по теме:

ссылки - C++
скиньте плиз несколько интерестных ссылок типа таких: http://www.firststeps.ru/mfc/winapi/winapi1.html уроки, примеры Добавлено...

[C++] Массивы и ссылки. - C++
Здравстуйте, подскажите, как можно изменить эти программу, чтобы там была ссылка на массив? #include &lt;iostream&gt; #include &lt;conio.h&gt; ...

Ссылки, стек - C++
Полистал форум, подобная тема уже была, но ответ был &quot;генерируется ошибка на подобную ситуацию&quot;. В данном случае ошибки нет, в связи с...

Указатели и ссылки - C++
Собственно, не могу до конца осознать как это работает, вот пример из вики(комменты входят в пример) int n = 6; // Объявление...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
18.06.2010, 08:29     Ссылки #7
всё так как и сказал Nick Alte - tree::in изменяет t
Yandex
Объявления
18.06.2010, 08:29     Ссылки
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru