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

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

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

int a[2][2] = { // 訂正 
{10,11}, 
{20,21} 
}; 

//a[1][1] => 21 
//*(a[1]+1) => 21 
//*( *(a+1) + 1) => 21 

//a[1]はa[1][n]の先頭アドレスを示す(配列名は先頭アドレスを返す。紛らわしいが、a[1]は配列名。) つまり、a[1]+nは、a[1][n]のアドレスを示すことと同じ。

//ではaは何を返すのだろう?
//aは二次元配列の先頭アドレスを返す。
//*(a+1)はa[1]のアドレスを返す。
//*(a+2)はa[2]のアドレスを返す。

//a+nを計算すると、二次元配列の行のバイト数(1要素をint型4バイトとすると、a配列は8バイト)分*nだけ加算されたアドレスが算出される。