c語言 &(head->next) 之記憶體位址詢問

我正在練習c的linklist
而我發現
&(head->next) 以及&head 兩著輸出的memory address不相同,因此想詢問為啥
就我的理解
&(head->next) 代表取head節點中的next指標之address
&head 代表取head節點的address

img

如圖所示我以為上述兩著&(head->next) 及&head 的結果都會是0x1001042f0

謝謝指教

对head取址,那么就是head的地址,对head的next取址,它的地址确实在head所指向的内存地址的旁边。
比如head=0x1001042f0,对head取址,那么head地址是多少,看栈当时的分配,我不知道。但是对head next取址,地址是0x1001042fc。如果这个结构定义的时候是{xxx next;xxx data;}(就是next在前),那么next的地址就是0x1001042f0,跟head所指向的地址一样,注意是head指向的地址,并不是head的地址

你抽象的谈head还是next肯定把自己绕晕了
就拿你的图来说
我们取node1的head和next
那么它的head指向的是自己,next指向的是node2,你还觉得node1和node2的地址应该是同一个吗