概ね方位不定だが多分割と偏っている
スポンサーサイト
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


C ポインタと一次元配列
2006年08月11日 (金) | 編集 |
文字列のときとあまり変わらん気もする。どっちも配列だし。
ま、やってみようか。
文字列の時もそうだったが、配列のデータはメモリ上に順番に格納されているので、ポインタを使って配列のそれぞれの要素を参照することが出来る。
例えば、整数型の配列a[6]の場合は、

int *pa;
pa=a;


によって参照出来るようになるわけだ。
これは配列名aは配列の先頭アドレスを持つポインタ定数と考えることが出来る為らしいぜ。よく分からんが。とにかく、pa=a;によって配列aの先頭アドレスがpaに代入されることには変わらないので、*paによって配列aのデータ、つまりa[0]を参照することが出来るってのは今までと変わらない。a[1]以降を参照する方法も同じだ。*paを進めればいい。
文字列っていうか最初のポインタの話と同じだな。

ま、これも話だけじゃよく分からんので実際にやってみるとしよう。
文字列の時と同様、ポインタを使って配列のデータを取り出して、表示してみようか。

まず、適当に配列を宣言し、ついでに初期化する。データの終わりは-9999でいいか。

static int a[]={17,18,18,18,24,18,-9999};

ポインタ変数を宣言し、アドレスを代入する。

int *pa;
pa=a;


後は*paが-9999になるまで数列の値を取り出して表示すればOK。

while(*pa!=-9999){
 printf("%d\n",*pa);
 pa++;
}


ループの最後にpaを次に進めるのを忘れないように。

pointer_int_str.jpgpointer_int_str2.jpg

こんな感じ。文字列のコードを改変しただけだったりするが。
ついでにロング型データにして、アドレスも表示してみる。

pointer_int_str3.jpgpointer_int_str4.jpg

こんな感じ。
ってアレ? 何かアドレス違うくない?
アドレスの書式制御文字は10進数じゃなくて16進数か。

適当に修正して実行。

pointer_int_str5.jpgpointer_int_str6.jpg

ついでにlong型の方の書式制御文字も%dから%ldに変更。
こっちは元々2桁なので結果変わらんけど。
ま、概ねOK。


まとめよう。

ポインタで配列のデータをそれぞれ参照できるぜ!


これしか言いようが無い。
それっぽいことは最初のポインタの話と文字列の時とで既にやってるからなあ。
スポンサーサイト

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。