動的二次元配列を作ろうとしているのですが

k=10
    char** a=NULL;
a=(char**)malloc(sizeof(char*)*2);
a[1]=(char*)malloc(sizeof(char)*k);

こういう時に
a[1][100]とかに要素数入れられるのがわからんし
sizeof *a[1]がkをいくつにしても4になる理由がわかりません
助けてください