黑马程序员技术交流社区
标题:
关于指针数组地址打印问题
[打印本页]
作者:
smilejoke
时间:
2015-8-24 08:53
标题:
关于指针数组地址打印问题
[code]int main(int argc, const char * argv[])
{
int a = 3,b = 4,c = 5;
int *p[3] = {&a,&b,&c};
printf("%p\n",&p[0]);
printf("%p\n",p[0]);
return 0;
}
为什么这两个地址不一样呢?谁知道啊,求助
作者:
你是我的小苹果
时间:
2015-8-24 09:17
这个当然不一样了,p[0]是存储a的地址,&p[0]是存储p[0]这个地址的数据所在的地址。
作者:
张中付
时间:
2015-8-24 11:27
楼上说的对,你对P[0]取&符后,就是取P[0]他的地址
作者:
smilejoke
时间:
2015-8-24 18:59
你是我的小苹果 发表于 2015-8-24 09:17
这个当然不一样了,p[0]是存储a的地址,&p[0]是存储p[0]这个地址的数据所在的地址。 ...
我明白了,指针p的本质其实也是一个用来存放地址的变量,那么既然是变量总会有地址,采用&p打印出来的就是它自己的地址。我之前一直疑惑在对地址取地址符是要闹哪样,现在看来把p看做变量对待就讲的通了。
作者:
xuexiujuan_1991
时间:
2015-8-24 22:11
这是一个指针数组,指针数组它也是个数组,只是这个数组中存的元素是指针类型的,所以数组中每个元素也都有它自己的地址。&p[0]指的就是这个数组第一个元素在内存中的地址,而p[0]指的就是第一个元素中所存放的指针,它其实就是a在内存中的地址。所以二者不一样
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2