C++言語を勉強し始めたところです。
まずは、下記のプログラムを見てください。
C++
1int main() { 2 char char_array[10]; 3 char* char_array_pointer; 4 char_array_pointer = char_array; 5 printf("%p \n", char_array); 6 for (int i = 0; i < 10; i++) { 7 char_array[i] = i; 8 printf("=========== \n"); 9 printf("a[%d] ポインタ:%p 値:%d 値:%d \n", i, char_array + i, char_array[i],*(char_array + i)); 10 // 配列のアドレスが入ったpointerは下記のようにすることでアクセス可能 11 printf("a[%d] ポインタ:%p 値:%d 値:%d \n", i, char_array_pointer + i, char_array_pointer[i], *(char_array_pointer + i)); 12 } 13} 14 15>> 出力 160137FC34 17=========== 18a[0] ポインタ:0137FC34 値:0 値:0 19a[0] ポインタ:0137FC34 値:0 値:0 20=========== 21a[1] ポインタ:0137FC35 値:1 値:1 22a[1] ポインタ:0137FC35 値:1 値:1 23以下略
質問は下記3点です。
- 「char_array[10]」には、アドレスが入っているとサイトや参考書などに記載がありましたが、それなら「*(char_array + i)」で要素の値を参照できることはわかりますが、「char_array[i]」でも要素を参照できるのはなぜでしょうか?自分のイメージだと、「char_array[i]」は、アドレスが出力されると思っていました。
- 「* char_array_pointer」のような配列の使い方を紹介しているサイトや参考書が多くありますが、使い道がわかりません。「char_array[10]」だけで要素の値にもアドレスにもアクセスできるので、「* char_array_pointer」のようにポインタ配列(?)を使用するメリットがわかりません。
- そもそも、このプログラムに限らず、ポインタの使い道がわかりません。具体例を用いて、役立つ場面を教えてほしいです。*もともとPythonエンジニアです。
以上よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。