如何取变量的地址..为何str和&str的值一样呢?详见代码
#include <stdio.h>
typedef unsigned int ui;
int main()
{
char str[10]="abdfhfd";
printf("%x\n",str);
printf("%x\n",&str);
printf("%x\n",&str[0]);
}
str 是字符数组的首地址,&str,应该是地址的地址,为什么str 和&str 显示的结果一样呢
C 地址
[解决办法]
我觉得楼上说得不是很正确,这个问题我也遇到过。你看一下这个网站:http://www.cppblog.com/cuigang/archive/2008/04/04/46271.html
上面有介绍。
按照这个网站上介绍的,我认为要把(&str)看成一个整体,它其实也是一个数组名。只不过类型是 char (*str)[100],与你定义的数组类型不一样。
楼下若有更好的解释,请更正。。。。
[解决办法]
char str[10];
str是一个变量,其类型为char [10],其值是一个数组,&str是这个变量的地址;
str[0]是数组里第一个元素,类型为char,其值是一个字符,&str[0]等价于&(str[0]),是这个数组的第一个元素的地址;
------------------------------------
[解决办法]
str[0]
[解决办法]
str[1]
[解决办法]
...
[解决办法]
...
------------------------------------
str[0]的地址在这里,str的地址也在这里,他们当然相等啦
另外,你无法使用整个数组,当你在程序中直接使用str而不是别的形式时,str的意义将不再是一个数组变量,而是该数组的首元素的地址