Mais conteúdo relacionado
Semelhante a C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp (20)
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
- 2. 自己紹介
2
名前 : くーむ ( o・ω・)ノ
Twitter : @cocodrips
職業 : ゲームプログラマ(2年目)
すきなもの : Python / C++
ブログ : ぴよぴよ.py
C++歴 : 2500行くらい (初心者)
- 10. 11
4 3 10 2 1
100(アドレス) 108
Q2 - 1. *array をcoutするとどうなる?
Q2.ポインタと配列
int array[5] = {4, 3, 10, 2, 1};
104 112 116
1. コンパイルエラー
2. 100
3. 4
- 11. 12
4 3 10 2 1
100(アドレス) 108
Q2.ポインタと配列
int array[5] = {4, 3, 10, 2, 1};
104 112 116
*array は、
array[0] のエイリアス
1. コンパイルエラー
2. 100
3. 4
Q2 - 1. *array をcoutするとどうなる?
- 12. 13
4 3 10 2 1
100(アドレス) 108
Q2 - 2. *(array + 4) をcoutするとどうなる?
Q2.ポインタと配列
int array[5] = {4, 3, 10, 2, 1};
104 112 116
1. コンパイルエラー
2. 104
3. 3
4. 1
- 13. 14
4 3 10 2 1
100(アドレス) 108
Q2 - 2. *(array + 4) をcoutするとどうなる?
Q2.ポインタと配列
int array[5] = {4, 3, 10, 2, 1};
104 112 116
1. コンパイルエラー
2. 104
3. 3
4. 1
array + 4 は array[4]のアドレス
*(array + 4) は
array[4] のエイリアス
- 14. 15
Q3 - 1. &array が100である時、
arrayの中身はどう配置されてる?
Q3.ポインタと多次元配列
int array[3][3] = {{0, 1, 2},
{3, 4, 5},
{6, 7, 8}};
0 1 2 3 4 5 6 7 81.
0 1 2 … … 3 4 5 … … 6 7 82.
100(アドレス)
100(アドレス)
- 15. 16
Q3 - 1. &array が100である時、
arrayの中身はどう配置されてる?
Q3.ポインタと多次元配列
int array[3][3] = {{0, 1, 2},
{3, 4, 5},
{6, 7, 8}};
0 1 2 3 4 5 6 7 81.
0 1 2 … … 3 4 5 … … 6 7 82.
100(アドレス)
100(アドレス)
- 16. 17
Q3.ポインタと多次元配列
int array[3][3] = {{0, 1, 2},
{3, 4, 5},
{6, 7, 8}};
0 1 2 3 4 5 6 7 8
100(アドレス) 104 108 112 116 120 124 128 132
Q3 -2. array[2] をcoutすると、何が表示される?
1. コンパイルエラー
2. 108
3. 124
4. 2
5. 6
- 17. 18
Q3.ポインタと多次元配列
int array[3][3] = {{0, 1, 2},
{3, 4, 5},
{6, 7, 8}};
0 1 2 3 4 5 6 7 8
100(アドレス) 104 108 112 116 120 124 128 132
array[2]が指しているのは、
array[2][0]のアドレス。
Q3 -2. array[2] をcoutすると、何が表示される?
1. コンパイルエラー
2. 108
3. 124
4. 2
5. 6
- 18. 19
Q3 - 3. array[1][2]に一次元でアクセスしたい時、
どうすれば5が表示される?
Q3.ポインタと多次元配列
int array[3][3] = {{0, 1, 2},
{3, 4, 5},
{6, 7, 8}};
- 19. 20
Q3.ポインタと多次元配列
int array[3][3] = {{0, 1, 2},
{3, 4, 5},
{6, 7, 8}};
((int*)array)[5];
arrayはint**型で、array[0]の先頭アドレス、
つまりarray[0][0]のアドレスを持っている。
int*型にキャストすれば、一次元でアクセス可能
Q3 - 3. array[1][2]に一次元でアクセスしたい時、
どうすれば5が表示される?
- 21. 22
Q4. おまけ
int array[5] = {4, 3, 10, 2, 1};
Q4. 何が表示される?
cout << 2[array] << endl;
10
array[2]は *(array + 2)のエイリアス。
array[2] == *(array + 2)
*(array + 2) == *(2 + array)
*(2 + array) == 2[array]
Notas do Editor
- 配列はこうやって連続的なアドレスに配置される