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


C ポインタ配列
2006年08月14日 (月) | 編集 |
配列をポインタでいろいろ弄くれるわけだが、このポインタ自体も配列に出来るそうだ。

ややこしいっつの。
が、とにかく、ポインタ変数も配列に出来る。その名もポインタ配列
何のひねりもありゃしねー。いいのかこれで。
ポインタ配列は

char *sta[3];

といったように宣言する。
これにより、sta[0]、sta[1]、sta[2]という3つのchar型へのポインタ配列が用意されるそうだ。今までと違うのはポインタの宣言時に[ ]がついているってことだな。ポインタ配列だから当然といえば当然だが。

さて。配列といえば宣言時に同時に初期化出来るわけだが、ポインタの場合は

static char *sta[3]={"Name","LV","HP"};

と記述して初期化する。
で、

Name\0
LV\0
HP\0


こんな感じに物理メモリに格納されるわけ。
上からそれぞれsta[0]、sta[1]、sta[2]に対応。



実際どうやって文字を参照するかというと、sta[2][0]のように指定する。この場合は"HP"の0文字目、'H'の文字を参照出来るってことだな。

んじゃ、例によって自分でプログラム書いてみようか。
とりあえず基本として配列を用意して表示してみるぜ。

適当にポインタ配列を用意

static char *sta={"STR","INT","PIE","VIT","AGI","LUC"};

ううむ。この時点で既に半分終わってるようなものなんだよな。
後は文字(列)を繰り返して表示して終わりなので、for文を使って

int i;
for(i=0 printf("%s\n",sta[i]);


以上。シンプル極まりねー。

pointer_str_char_test.jpgpointer_str_char_test2.jpg
こんな感じ。久々にコンパイラに怒られた

これだけだとアレなので、2文字目がIのものだけ取り出してみよう。
これだけのアレでコンパイラに怒られた俺も俺だが。

特定のものを取り出す場合は

for文で片っ端から試して
 if文で判定して条件に合致したら
  取り出して表示


すればいいので、

for(i=0;i<6;i++){
 if(sta[i][1]=='I')
  printf("%s\n",sta[i]);
}

でOK。

pointer_str_char_test3.jpgpointer_str_char_test4.jpg
こんな感じ。==を=と書いて怒られるのはご愛嬌

まとめよう。

ポインタ変数も配列に出来るぜ!
データ型 *変数名[ ]; で宣言するぜ!


以上。動かなくてもシャツが汗でべたつく程度には暑い。

夏はこうでないとな!







早く秋にならんかね。
スポンサーサイト

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