インクリメント演算子 "++" の仕組みについて教えて下さい


[苦しんで覚える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]




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

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

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

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

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




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

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

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

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

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

