>69
・・わかるぜ、その気持ち。



char moji[]="abc";

---------------------------
| 'a' | 'b' | 'c' | '\0' |
---------------------------

んで、

配列名mojiはたしかに先頭要素を指すよ。

#include <stdio.h>

int main(void)
{
char str[]="moji";
printf("%p\n",str);
printf("%p\n",&str[0]);
printf("%c\n",*str);

return 0;

}

[hh c]$ ./a.out
0x11ffffa10
0x11ffffa10
m <-------先頭要素の文字が出力された
[hh c]$


strと&str[0]は同じアドレス。

strは先頭要素を指すポインタと「みなされる」
のであって、ポインタではない。
配列名が保持するアドレスは固定であって、定数である。
だから、strにアドレスを代入することはできない。
それに対し、ポインタは変数である。



配列へのポインタってのは

int (*a)[3]

などと表す。

これは "int型の要素を3つもった配列"をさすポインタ

である。