参照が何であるかを理解するためにこの簡単なスクリプトを書いたので、char配列にぶつかっています。私は&numbers[i]
を使用する場合、私は、メモリ・ロケーションである奇妙な番号を受信、int
アレイとchar参照を理解する
3
0xbffff958
6
0xbffff95c
9
0xbffff960
12
0xbffff964
15
0xbffff968
--------------
a
abcde
b
bcde
c
cde
d
de
e
:
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;
}
は、これが出力されます。これで結構です;それはまさに私が理解したものです。
しかし、char
では、なぜこの出力があるのかわかりません。
2番目の部分は、コードが言う限りでは、 'letters'はヌル終端されていないとみなし、地獄と背中のすべてに壊れませんでした。しかし、UBは、「プログラムが明らかに働いていても、何かが起こりうる」という意味です。 – cHao
@cHao:一部のコンパイラでは、デバッグモードでコンパイルするときにゼロを多く初期化します。おそらくOPは "ラッキー"でした。 –
私はまだ誰もこれを言及して驚いていますが、これは参照とは関係ありません。あなたはポインタについて話している。 –