在下面的代碼:爲什麼的sizeof(*節點)賦予這個結構的大小,而不是大小的指針
typedef struct{int data1; int data2} node;
node n1;
node* n2;
sizeof(n1) returns 8 // size of the struct node
sizeof(n2) returns 4 // since n2 is a pointer it returns the size of the pointer
sizeof(*n2) returns 8 // HOW DOES THIS WORK ?
怎樣的sizeof實際工作?在上面的例子中,* n2歸結爲提供n2指向的地址。在這種情況下,n2仍然是一個懸掛指針,因爲我們既沒有分配內存,也沒有將它指向某個有效地址。它如何正確地給出結構的大小?
「* n2歸結爲提供n2指向的地址」不正確。 'n2'是指向節點的指針,'n2'的值是節點的地址,'* n2'是節點。 – 2014-09-12 12:30:39
根據以上評論。 '* n2'表示'n2'指向的內容,而不是「n2指向的地址」。實際上'n2'本身的值是「n2指向的地址」,因爲'n2'是一個指針。 – davmac 2014-09-12 12:38:05
編寫'sizeof * n2'來提醒自己sizeof'是一個操作符,而不是一個函數。另外,它是很好的風格。 – 2014-09-12 12:51:47