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";

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

答案是一样的。

Avatar_small
Things to do 说:
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


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter