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

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

Войти
Регистрация
Восстановить пароль
 
Krock21rus
74 / 74 / 19
Регистрация: 18.11.2013
Сообщений: 373
Завершенные тесты: 2
#1

Что означает *& - C++

05.04.2014, 21:53. Просмотров 572. Ответов 2
Метки нет (Все метки)

Искал я информацию про деревья в с++, нашёл информацию в http://ci-plus-plus-snachala.ru/?p=1249
но там используется *&, что мне не совсем понятно, в гугле информация только на англ. поэтому прошу обьяснить мне что означает *& в с++

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
using namespace std;
 
struct Node //Звено дерева
{
   int x; //То, что записываем в дерево
   Node *l,*r; //Это указатели на новые звенья
};
 
void show(Node *&Tree) //Функция обхода
{
    if (Tree!=NULL) //Пока не встретится пустое звено
    {
       show(Tree->l); //Рекурсивная функция для вывода левого поддерева
       cout<<Tree->x; //Отображаем корень дерева
       show(Tree->r); //Рекурсивная функци для вывода правого поддерева
    }
}
 
void add_node(int x,Node *&MyTree) //Фукция добавления звена в дерево
{
    if (NULL==MyTree)  //То, о чем я в самом начале писал. Если дерева нет, то ложим семечко
    {
        MyTree=new Node; //Выделяем память под звено дерева
        MyTree->x=x; //Записываем данные в звено
        MyTree->l=MyTree->r=NULL; //Подзвенья инициализируем пустотой во избежание ошибок
    }
 
                   if (x<MyTree->x)   //Если нововведенный элемент x меньше чем элемент x из семечка дерева, уходим влево
                      {
                          if (MyTree->l!=NULL) add_node(x,MyTree->l); //При помощи рекурсии заталкиваем элемент на свободный участок
                          else //Если элемент получил свой участок, то
                          {
                              MyTree->l=new Node;  //Выделяем память левому подзвену. Именно подзвену, а не просто звену
                              MyTree->l->l=MyTree->l->r=NULL; //У левого подзвена будут свои левое и правое подзвенья, инициализируем их пустотой
                              MyTree->l->x=x; //Записываем в левое подзвено записываемый элемент 
                          }
                      }
                 
                    if (x>MyTree->x)   //Если нововведенный элемент x больше чем элемент x из семечка дерева, уходим вправо
                      {
                          if (MyTree->r!=NULL) add_node(x,MyTree->r); //При помощи рекурсии заталкиваем элемент на свободный участок
                          else //Если элемент получил свой участок, то
                          {
                              MyTree->r=new Node;  //Выделяем память правому подзвену. Именно подзвену, а не просто звену
                              MyTree->r->l=MyTree->r->r=NULL; //У правого подзвена будут свои левое и правое подзвенья, инициализируем их пустотой
                              MyTree->r->x=x; //Записываем в правое подзвено записываемый элемент 
                          }
                      }
        
}
 
int main()
{
   Node *Tree=NULL;  //Создаю указатель, тип которого = звено дерева и инициализирую его пустотой
  
 
      
      for (int i=5;i>0;i--) add_node(i,Tree); //Это я забивал 5-4-3-2-1, а вывод сами увидите
      show(Tree); //Вывод на экран дерева. или просто обход дерева
 
      cin.get();
 
   return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2014, 21:53     Что означает *&
Посмотрите здесь:

Что означает node*& ? - C++
void del_all(node*&amp; r) //удаление всех узлов { if (!r) return; del_all(r-&gt;left); del_all(r-&gt;right); delete r; r = NULL; ...

Что означает сочетание *& - C++
например здесь: struct Node //Звено дерева { int x; //То, что записываем в дерево Node *l,*r; //Это указатели на новые...

Что означает данное условие? if (i & (1 << j) - C++
Можете объянить простым алгоритмическим языком что данное условие означает? if (i &amp; (1 &lt;&lt; j))

что означает данная строчка? &operator - C++
что это означает? (Tabl это класс) friend ofstream &amp;operator &lt;&lt; ( ofstream &amp;outf, Tabl MyTabl ) я так понимаю объявляется...

Что означает знак & в объявлении функции - C++
Здравствуйте, в обучающих статьях о С++ наткнулся на очень интересную синтаксическую конструкцию. Не совсем разобрался с указателями и...

Что означает запись (struct addr *)&one - C++
Что означает тринадцатая строчка в коде? #include &lt;iostream&gt; using namespace std; int main() { struct addr { int a; ...

Что означает строка: CString &ptr = Text; ? - C++
Помогите please! Что означает строка: CString &amp;ptr = Text; Text определена выше, как: CString Text;

Непонятный указатель: что означает запись (IEngineSubSystem *&)p_render ? - C++
Здравствуйте. Вот код: IRender *p_render; pEngineCore-&gt;GetSubSystem(ESS_RENDER,(IEngineSubSystem *&amp;)p_render); Там еще, короче,...

Что это такое **&amp;? - C++
Здравствуйте! как загуглить,

Что значат && и || - C++
Вроде бы результат кода один и тот же первый код #include &lt;stdio.h&gt; #define MAX_STRING_SIZE 20 int main() { FILE *pFile;...

Что означает #include - C++
что означает на С++ #include

Что означает <int>? - C++
int **X = Create &lt;int&gt;(M, N); или, если можно, опишите что означает строка сверху


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
recoder
130 / 130 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
05.04.2014, 21:58     Что означает *& #2
Это ссылка на указатель.

Пример:
C++
1
2
3
4
5
6
7
8
9
void scanTo( const char **p, char c ) 
{
     while( **p && **p != c )
     ++*p;
}
//...
char s[] = "Hello, World!";
const char *cp = s;
scanTo( &cp, ',' ); // перемещает cp на первую запятую
C++
1
2
3
4
5
6
7
8
9
void scanTo( const char *&p, char c ) 
{
     while( *p && *p != c )
     ++p;
}
//...
char s[] = "Hello, World!";
const char *cp = s;
scanTo( cp, ',' );
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.04.2014, 23:49     Что означает *& #3
Цитата Сообщение от Krock21rus Посмотреть сообщение
прошу обьяснить мне что означает *& в с++
Что такое ссылки в С++, надеюсь, знаете? Указатель - это переменная, содержащая адрес. *& - ссылка на такую переменную (ссылка на указатель).
Yandex
Объявления
05.04.2014, 23:49     Что означает *&
Ответ Создать тему
Опции темы

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