我已经写了这个简单的脚本来理解引用是什么,并且我陷入了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