char s1[] = "hello";
char *s2 = "hello";
很显然,s1是一个字符数组(以'\0'结尾),在C语言中,可以把数组名s1当作一个指针(数组首地址)来看待(但不完全是,《C expert programming》上是这么说的),的确因为 *s1 = 'a',所以s1貌似是个指针,但为什么sizeof(s1)会等于6而不是2(或者4,因C编译器而异)?
相对应地,sizeof(s2)=2,显然,s2的确是一个指针。那么s1究竟是指针吗?如果不完全是,究竟是怎样的呢?