精華區beta Programming 關於我們 聯絡資訊
※ 引述《march20 (澄)》之銘言: : 呵, 有人問這個問題 : : int a[10]; : cout << a << endl; : cout << &a << endl; : 那麼輸出會是什麼呢? : 雖然這個問題很無聊, : 不過這問題大概困擾了不少人吧:) : 呵, 先賣個關子, 大家想想看吧 :> 呵, 不知道我的解釋對不對... 1. 被宣告成 array 的 "變數?" , 其實是 const * 型別 比如 int a[10], 則 a 的 type 就是 const int * 2. 在 compiler 的角度來看, const type 並無 "意義上" 所屬的 momory, 本質就像 1, 2, 3, 'c', 'd', 'e', 這些常數一樣, 因此, 對這些數作 & 的動作是無意義的 (連 memory 都有有, 怎麼會有 address 呢? ) 3. 那麼 &a 會被怎麼 "解釋" 呢? 這裡就是 compiler 動的手腳啦, compiler 遇到 &a, 會自動解釋成 a 也就是 &a, a 雖然 type 不一樣, 但本質上是指向同一處的 這種現象在 TC 3 則更明顯, 不只 a, &a, &(&a), &(&(&a))), ... etc. 全部都會有同一個值 -- ※ 發信站: 批踢踢實業坊(ptt.twbbs.org) ◆ From: jul.csie.ntu.ed