3 回答

眼眸繁星
TA貢獻1873條經(jīng)驗 獲得超9個贊
當t
在表達式中單獨使用它時,將進行數(shù)組到指針的轉(zhuǎn)換,這將產(chǎn)生一個指向數(shù)組第一個元素的指針。
當t
用作&
運算符的參數(shù)時,不會進行這種轉(zhuǎn)換。所述&
然后明確地需要的地址t
(陣列)。&t
是指向整個數(shù)組的指針。
數(shù)組的第一個元素在內(nèi)存中的位置與整個數(shù)組的開頭相同,因此這兩個指針具有相同的值。

小唯快跑啊
TA貢獻1863條經(jīng)驗 獲得超2個贊
t
由于您無法更改,因此沒有名為的變量。該名稱t
僅指第一個元素的地址(并且還具有與之關(guān)聯(lián)的大?。?。因此,采用該地址的地址實際上是沒有意義的,并且C將其“折疊”為僅僅是地址。
對于函數(shù)情況,也會發(fā)生同樣的事情:
int foo(void){ return 12;}printf("%p and %p\n", (void *) foo, (void *) &foo);
這應(yīng)該打印出相同的內(nèi)容,因為沒有保存地址的變量foo
,而該地址又可以采用。

holdtom
TA貢獻1805條經(jīng)驗 獲得超10個贊
的實際類型t
是int[10]
,&t
數(shù)組的地址也是如此。
同樣,int[]
隱式轉(zhuǎn)換為int*
,因此t
轉(zhuǎn)換為數(shù)組第一個元素的地址。
添加回答
舉報
0/150
提交
取消