int t[10];int * u = t;cout << t << " " << &t << endl;cout << u << " " << &u << endl;輸出:0045FB88 0045FB880045FB88 0045FB7C輸出對于u是有意義的。我理解t并且&t[0]應該具有相同的值,但是為什么&t也相同?&t實際上是什么意思?
3 回答
眼眸繁星
TA貢獻1873條經驗 獲得超9個贊
當t在表達式中單獨使用它時,將進行數組到指針的轉換,這將產生一個指向數組第一個元素的指針。
當t用作&運算符的參數時,不會進行這種轉換。所述&然后明確地需要的地址t(陣列)。&t是指向整個數組的指針。
數組的第一個元素在內存中的位置與整個數組的開頭相同,因此這兩個指針具有相同的值。
小唯快跑啊
TA貢獻1863條經驗 獲得超2個贊
t由于您無法更改,因此沒有名為的變量。該名稱t僅指第一個元素的地址(并且還具有與之關聯的大?。?。因此,采用該地址的地址實際上是沒有意義的,并且C將其“折疊”為僅僅是地址。
對于函數情況,也會發生同樣的事情:
int foo(void){
return 12;}printf("%p and %p\n", (void *) foo, (void *) &foo);這應該打印出相同的內容,因為沒有保存地址的變量foo,而該地址又可以采用。
添加回答
舉報
0/150
提交
取消
