Консультация № 64575
28.11.2006, 12:26
0.00 руб.
0 3 2
Здравствуйте!
Помогите разобраться (пример из книжки)-
struct TNode {
int value;
TNode* pnext; //тут не ясно
TNode(int val): pnext(0), value(val){} // и тут
};
pnext - это просто указатель на структуру? и можно ли его объявить вне структуры?
последняя строка не ясна совсем...
(Разве на СИ так можно объявлять?)
Заранее спасибо )

Обсуждение

Неизвестный
28.11.2006, 12:34
общий
это ответ
Здравствуйте, Gang!
Это классический пример построения списка.
Указатель на структуру (как вообще на любой тип) конечно можно объявить вовне. Не уверен можно ли объявлять указатель на структуру ВНУТРИ нее в стандарте С, но в С++ - это один из ключевых моментов нового стандарта.
Последняя же строка - это inline (встроеный) конструктор - специальный метод-функция класса - который отвечает за дополнительные действия при создании каждого экземпляра этого класса, и вот этого точно нет в стандарте С.
: pnext(0), value(val) - это инициализация членов класса значениями, которые могут быть либо константами, либо передаваться в качестве параметров конструктора.

Итак, вывод RTFM в данном случае по стандарту языка
Неизвестный
28.11.2006, 12:37
общий
это ответ
Здравствуйте, Gang!

Это объявление структуры - узла связного списка.
int value - значение, хранимое узлом.
TNode* pnext - указатель на следующий элемент списка. Его смысл - каждый элемент хранит в себе указатель на следующий, таким образом список можно проходить только последовательно, зная первый элемент (или указатель на него).
TNode(int val): pnext(0), value(val){} - конструктор структуры, инициализируйщий член value значением своего единственного параметра val, и pnext нулем.
Неизвестный
28.11.2006, 13:00
общий
а подскажите , как ето реализовать на стандартном СИ, в плане конструктор.Я так понял, что указатель на структуру можно объявить в main() ?
Форма ответа