黑马程序员技术交流社区
标题:
里面的 变量 a,b,c,的地址 和指针数组里的元素&a,&b,&c的地址...
[打印本页]
作者:
驴小叔
时间:
2015-9-5 23:56
标题:
里面的 变量 a,b,c,的地址 和指针数组里的元素&a,&b,&c的地址...
#include <stdio.h>
int main(){
int a = 5, b = 7, c = 9;
/*&a = 0x7fff50a61be8
&b = 0x7fff50a61be4
&c = 0x7fff50a61be0*/
printf("&a = %p\n&b = %p\n&c = %p\n",&a,&b,&c);
//一维指针数组 : 数组类型 *数组名[数组长度] = 数组 数组里面存放的是地址(指针)
int *p[3] = {&a,&b,&c};
//遍历指针数组的每个元素的地址
for(int i = 0; i < 3;i++){
printf("&p[%d] = %p\n",i,&p[i]);
/* &p[0] = 0x7fff5a5abbf0
&p[1] = 0x7fff5a5abbf8
&p[2] = 0x7fff5a5abc00*/ }
return 0;
}
里面的 变量 a,b,c,的地址 和指针数组里的元素&a,&b,&c的地址...为什么不一样呀.....
作者:
胥鹏飞
时间:
2015-9-6 00:32
我也想问这个问题呢,第二个不懂
作者:
小笼包
时间:
2015-9-6 10:37
问题看了,求楼下大神解释
作者:
ZQG
时间:
2015-9-6 10:50
新定义一个指针数组的话,系统也会给他新创建一个新的地址,&p【0】的话是取了你新定义指针数组元素的地址,也就是p【0】本身的地址,而p【0】是个指针,本身也有地址,它里面存的内容是a元素的地址,有点二级指针的意思。p【0】=&a,这是我认为的,不知道对不对
作者:
wulei1982516
时间:
2015-9-6 11:32
1.首先,我非常同意楼上的看法,我觉得你说的完全对,但是我也想说说我的理解.
2.指针:是一个存放地址的变量,即然是变量,那么系统就会分配给一块空间给这个指针变量,那么分配的分间自然也有地址啰,所以 for循环遍历的是指针变量它本身的地址,而不是变量里面存的地址,所以呢存放的别人的地址和自身的地址是不一样的,over!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2