89251


[苦しんで覚えるC言語](https://9cguide.appspot.com/) にてCを学んでいる中学生です。  
Cの"++"演算子についてわからないことがあったので質問をさせて下さい。

以下のコードで、配列のアドレス指定って16進数で4ずつ変えていっていると思うのですが、（「0, 0x4, 0x8, 0xc, 0x10,
0x14...」のように）該当のコードでは、ポインタ変数dataのアドレスに１を足しているだけのように見えます。

もしかしてアドレスの場合は4を足すっていうふうになっているんですかね？

[code]

    for (data = array; data != &array[10]; data++)
    {
        average += *data;
    }
    
[/code]


CC BY-SA 4.0
2022-06-06T04:09:02.857
89250
2022-06-06T08:30:03.023
2022-06-06T08:30:03.023
3060
52948
question
c
インクリメント演算子 "++" の仕組みについて教えて下さい


この辺は概念理解のほうが大事で、ポインタを１進める＝１つ次の要素を指すと覚えるといいです。

どうしても具体的実装を知りたいということなら `array` の１要素の大きさとポインタの内部表現値は連動していて

  * 1byte なら１進みます (`char` とか)
  * 2byte なら２進みます (`short` とか)
  * 4byte なら４進みます (`int` とか `float` とか)
  * 8byte なら８進みます (`double` とか)
  * 構造体を使うようになるともっと大きいサイズになることも普通にあります

が、繰り返しますけど「`++` すると１つ次の要素を指す」と理解することが大事です（ `--` だと１つ前の要素を指すわけですね）

# こんな詳細実装を常に意識しなければならない言語は [c](/questions/tagged/c "'c' のタグが付いた質問を表示") くらいなもの


CC BY-SA 4.0
2022-06-06T04:39:56.963
89251
2022-06-06T04:39:56.963
8589
89250
answer


配列を作るときにcharの配列、shortの配列、intの配列、構造体の配列等、1つのデータの大きさは様々ありますが、ポインターのインクリメントは元になっている配列の添え字を1つ増やした位置のアドレスになります。アドレスが1増えるのではなく、1×元データのサイズになるってことです。


CC BY-SA 4.0
2022-06-06T08:21:15.223
89254
2022-06-06T08:21:15.223
24490
89250
answer