c语言中,为什么在输出地址时,普通指针不用加&,而数组地址要加&?

c语言中,为什么在输出地址时,普通指针不用加&,而数组地址要加&?

c c++

6个回答

指针存的就是地址啊,而且数组名也不用加,它就是数组的首地址,只不过后面的某个元素array[n],取它的地址就得加&

数组名和指针是不一样的。数组名仅仅是一个符号,不是变量,它没有自己的存储空间,等于第一个变量的地址,而指针实实在在的是个变量,有自己的空间!但是
char str1[20] = {"ha,hei,ha"};
printf("%X\n",str1);
printf("%X\n",&str1[0]);
结果是一样的。

指针本身就是指的地址,而数组是一个对象,所以一般用&来标志取它的地址

单纯输出地址的时候数组也可以不加&啊,没有说必须得加,数组名代表了数组的首地址

如果这个是一个具体值的话,加&取其地址,如&A[10],如果本身就是一个地址,这不需要如数组名A

指针本来存放的就是地址啊,比如p = 0x01 是地址,而*p = 1 是指针指向的内容,数组就不同了,和指针本来就有区别

立即提问