主函数中 定义一个数组 随后定义指针 数据入栈问题

int name[]={1,2,3,4,5};

int *p=name;
int **k=&p;
int ***i=&k;
int ****j=&i;
int *****h=&j;

printf("name[0]:%p\n",&name[0]);
printf("name[1]:%p\n",&name[1]);
printf("name[2]:%p\n",&name[2]);
printf("name[3]:%p\n",&name[3]);
printf("name[4]:%p\n",&name[4]);
printf("p:%p\n",p);
printf("k:%p\n",k);
printf("&p:%p\n",&p);
printf("&k:%p\n",&k);
printf("&i:%p\n",&i);
printf("&j:%p\n",&j);
printf("&h:%p\n",&h);

在这里插入图片描述
发现了没 ,数组由a[4]到a[0]地址依次递减,按照我前面那篇文章字符指针的 主函数中 前面的代码应该先读入放入栈顶(低地址),后存的放入栈底(高地址),那么 p k i j h 的地址应该在name[4]前面,事实是放在了name[0]后面,相差8个字节:然后p k i j h指针地址 代码在前面的存入低地址,代码在后面的存入了高地址,这还是一致的。问题是 为什么数组指针放一块 ,指针跑到数组地址后面去了呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值