#c #pointers #struct
#c #указатели #структура
Вопрос:
Когда я объявляю:
struct str_node{
int data;
struct str_node *next;
}node;
node *head = NULL;
Это что-то вроде:
head = NULL;
или
*head = NULL
Ответ №1:
Каждое объявление имеет следующий формат:
Type varName = initializer;
В вашем случае
node * head = NULL;
^ ^ ^
| Type | | varName | = | initializer |;
Итак, head
это переменная, тип которой node *
(указатель на node
). Переменная — это то, head
какое значение инициализируется NULL
.
Ответ №2:
Я хотел бы расширить ответ Роберто.
Это
node *head = NULL;
не будет компилироваться, потому что node
это не тип, на самом деле это переменная с struct str_node
именем node
. Если вы хотите определить тип, используйте typedef
спецификатор, например
typedef struct str_node{
int data;
struct str_node *next;
}node;
node *head = NULL;
Комментарии:
1. Да, извините, я неправильно скопировал код, но я написал его так же, как вы.
Ответ №3:
Определите указатель и установите его значение в NULL
:
int *head = NULL;
// conceptual memory address value
// head 0xABCD0000 0
// that is;
// head is pointing to nowhere
Определите указатель, затем установите его значение в NULL
:
int *head;
head = NULL;
// conceptual memory address value
// head 0xABCD0000 0
// that is;
// head is pointing to nowhere
Определите указатель, затем установите адрес памяти, на который он указывает, на 0
:
int *head;
head = 0xDCBA0000; // or a "malloc" function
*head = 0;
// conceptual memory address value
// head 0xABCD0000 0xDCBA0000
// ...
// *head 0xDCBA0000 0
// that is;
// head is pointing to 0xDCBA0000
// and the value of the memory it's pointing at is set to zero
Ответ №4:
Добро пожаловать в SO! Это как head = NULL;