12/12/09 10:26:51.15
>>3
a=(char**)malloc(sizeof(char*)*2);
で、char *というポインタ値を入れる配列が2個できます。
a[0] と a[1]です。ポインタ値は(32bitでは)4bytesです。
a[1]=(char*)malloc(sizeof(char)*k);
で、charという値を入れる配列が k個できます。
a[1][0],a[1][1],,,,a[1][k-2],a[1][k-1]です。
charは、(Cの規格では)1bytesです。
> sizeof *a[1]がkをいくつにしても4になる理由がわかりません
多分 sizeof(a[1]) の事だと思いますが、a[1]は、上に書いたように
ポインタ値(4bytes)なので4になります。
ちなみに、k = 10 であれば、
> a[1][100]とかに要素数入れられるのがわからんし
これは確保した領域外へのアクセスなので、やってはいけません。