我已經寫了這個簡單的腳本來理解引用是什麼,並且我陷入了char數組。瞭解字符引用
int numbers[5] = {3, 6, 9, 12, 15};
for (int i = 0; i < 5; i++)
{
cout << numbers[i] << endl;
cout << &numbers[i] << endl;
}
cout << "--------------" << endl;
char letters[5] = {'a', 'b', 'c', 'd', 'e'};
for (int i = 0; i < 5; i++)
{
cout << letters[i] << endl;
cout << &letters[i] << endl;
}
,這是輸出:
3
0xbffff958
6
0xbffff95c
9
0xbffff960
12
0xbffff964
15
0xbffff968
--------------
a
abcde
b
bcde
c
cde
d
de
e
隨着int
陣列,當我使用&numbers[i]
,收到一個陌生的號碼是一個存儲器位置。還行吧;這正是我所理解的。
但與char
,我不明白爲什麼我有這個輸出。
我感到半驚訝第二部分並沒有打破所有的地獄和背部,考慮到代碼說''字母'不是終止。但是,UB的確意味着「任何事情都可能發生,甚至程序顯然也在工作」。 – cHao 2012-02-12 23:50:39
@cHao:在調試模式下編譯時,一些編譯器會將許多東西初始化爲零。也許OP是「幸運的」。 – 2012-02-12 23:52:33
我很驚訝沒有人提到過這一點,但這與參考文獻無關。你在談論指針。 – 2012-02-13 00:24:10