気ままなタンス*プログラミングなどのノートブック

プログラミングやRPGツクール、DTM、VOCALOIDについてのんびり書きます。

【メモ】C言語学習_ポインタ01

昨日のプログラミング生放送で、かなりぐだぐだになったので、
基本的な部分を学習しなおし。
(http://com.nicovideo.jp/community/co1082097)

生放送中は、基本的な構文で悩まないようにする。
(ポインタ変数、関数作成、ヘッダーファイル等々が原因でコンパイルが通らないのは避ける)
※アルゴリズム・ロジックの実装で悩むのはOK

①2次元配列で定義された要素について、ポインタを用いて指定

int t[10][20]; 
// tは2次元配列のポインタを返すため、intポインタにキャスト 
int *p = (int *)t; 
int value = 0; 

t[1][2] = 99; 

// 99 => t[1][2] 
value = *(p + (1*20) + 2); 

②ポインタ配列

// ②-1 
int *p[10]; 
int i = 99; 
p[8] = &i; 

printf("%d", *p[8]); // => 99 


// ②-2 
char *cp[] = { 
"文字列01", 
"文字列02" 
};
 

// 文字列定数 [""]ダブルクォーテーションで囲まれた文字列について、 
// コンパイラによってプログラムの文字列テーブルに格納され、そのポインタが生成される 

printf("%s", cp[1]); // cp[1]には"文字列01"の先頭アドレスが格納されている