AVRマイコンで始めるC言語の使い方
          ポインタ
          
            
ポインタの宣言
            ポインタの宣言は以下のようにします。
               int *p;
            アスタリスク*はポインタを表します。
            pはポインタつまりメモリアドレスを示します。
            *pはint型のデータを示し、2バイト分のメモリ領域を確保します。
            
            メモリ
                                ┏━━━━━━━━┓
            アドレスp    ┃                 
                 ┃ *pの下位1バイト
                                ┃------------------┃
                                ┃
                                 
              ┃ *pの上位1バイト
                                ┗━━━━━━━━┛
            
            
            配列
            C言語では関数で直接配列を渡すことができません。そのため、ポインタで渡すことになります。つまり引数にポインタを使います。
                         int d[3];
                         int *p;
            &d[0]はアドレスです。ポインタを使うと p = &d[0];となります。
                 メモリ
            アドレス ┏━━━━━━━━┓     値
            &d[0]     ┃            
                      ┃  ┓
                          ┃------------------┃  ┃
            d[0]
                          ┃      
                              ┃  ┛
                          ┣━━━━━━━━┫
            &d[1]     ┃            
                      ┃  ┓
                          ┃------------------┃  ┃
            d[1]
                          ┃      
                              ┃  ┛
                          ┣━━━━━━━━┫
             &d[2]    ┃           
                         ┃  ┓
                          ┃------------------┃  ┃
            d[2]
                          ┃      
                              ┃  ┛
                          ┗━━━━━━━━┛
            
            
            ポインタのインクリメント
            上記例で、p = &d[0]とします。p++は次のアドレス&d[1]を示します。d[]はint型ですのでp++するとアドレスは2つ自動的に進みます。
            char d[3]の場合、p++するとアドレスが1つ進みます。
            long d[3]の場合、p++するとアドレスが4つ進みます。
          
          
         
        