struct node
{
int data;
struct node *next;
};
struct node *link
* следующий и * ссылка оба указателя, поэтому их размер будет таким же. Тип данных, на которые они указывают, одинаковый, структура node
. Но они совершенно разные:
struct node *p = malloc(sizeof (node)); //allocate memory for a new node
//now, p will point to an address.
//p->next is still un-initilized, so we have to assign it an address
p->next = NULL;
p, and p->next point to different addressess
Таким образом, два указателя отличаются друг от друга и существуют независимо друг от друга. На самом деле, * ссылка не должны даже быть указатель, вы можете статически выделить память для узла:
struct node p;
p.next=NULL
Или вы можете добавить другие указатели на узел в структуре узла для более сложных структур данных, таких как деревья или двойные связанные списки:
struct node
{
int data;
struct node* next;
struct node* prev;
}
Конечно, они имеют одинаковый * тип данных *. Ты их так объявил! Оба они указывают на адрес типа данных 'struct node'. –
Что заставляет вас думать, что существует разница? –
@MichaelWalz Я чувствую себя как разница, потому что следующий указатель объявляется, когда структура не определена полностью, а указатель ссылки объявлен, когда структура полностью определена. – kapil