et" href="hpbsmtparts.css" type="text/css" id="hpbsmtparts">
本文へスキップ

アトメル社のAVRマイコンをつかった電子工作および無線を使った電子工作を紹介します。





ホーム >ソフト室 >AVRマイコンで始めるC言語の使い方 >ポインタ

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つ進みます。

前ページ次ページ