typedef struct student {
char* first_name;
char* last_name;
char* smth;
student* link; // is this null pointer??
}student;
Это объявление переменной-члена. Нет указателя link
, пока не будет создан объект student
.
student* first, *new; //
student* temp; // are these null pointers?
Переменные со статической продолжительностью хранения инициализируются нулями (до дальнейшей инициализации, если таковые имеются). Поэтому изначально это нулевые указатели. За исключением new
, который является ключевым словом и, следовательно, неправильно сформированным именем переменной.
есть три указателя. «первый», «новый» и «временный». Они всегда нулевые указатели
Зависит от того, как вы инициализировали объект student
. Существует множество различных синтаксисов, которые можно использовать для инициализации объекта.
Если вы инициализировали его по умолчанию, то он не обязательно будет нулевым - инициализированные указатели по умолчанию имеют неопределенное значение. Если объект не имеет статической памяти, в этом случае он инициализируется нулями, как я упоминал выше. Если вы прочитаете неопределенное значение, поведение программы будет неопределенным (применяются некоторые исключения).
Если у вас есть значение, инициализированное объектом, тогда указатель будет нулевым.
Если у вас есть список инициализированных объектов, то эти указатели будут иметь значения, которые вы указали в выражении инициализатора. Те элементы указателя, которые не имеют инициализатора, будут инициализированы значением и, следовательно, будут нулевыми.