char a[]和char *a的区别

Posted on 2012年5月22日 08:42

一道面试题,呵呵,没做对。

char a[100];

char *b = a;

printf ("%d %d",sizeof (a),sizeof(b));

正确的输出结果为:

100 4

二者本质上可以看为指针,可以将a赋值为b,但二者是有区别的,a是名字表示数组,而b是指针占用4个字节的指针,

编译后,对二者的访问是不同的,a是直接方位内容,加偏移,也就是a是编译时候地址就确定的,而b是指针,其内容是

放的地址,故需要先获得其地址,再访问地址指向的内容。

而在char a[]做参数的时候,a自动退化为同类型的指针。

 

还有一道面试题,做对了。

char *a = "123";

char *b = "123";

问二者的地址是否是一样的?

答案是一样的。