char a[]和char *a的区别
喜洋洋
posted @ 2012年5月22日 08:42
in 面试题
, 987 阅读
一道面试题,呵呵,没做对。
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";
问二者的地址是否是一样的?
答案是一样的。
2022年8月05日 15:10
A new adventure is waiting for you to discover, let's find out the most visited places on Things to do post