黑马程序员技术交流社区
标题:
关于用指针打印一个数组
[打印本页]
作者:
hanqiuiu
时间:
2015-8-11 23:27
标题:
关于用指针打印一个数组
#include <stdio.h>
int main()
{
int arr[4]={2,3,4,6};
int (*p)[4]=&arr;
for (int i=0; i<4; i++) {
printf("%d\n",*((int*)p+i));
}
return 0;
}
为什么打印的结果需要输出*((int*)p+i))啊?哪位同学给我讲讲啊
作者:
庐山烟雨浙江潮
时间:
2015-8-12 09:42
你这里使用了一个二级指针。int * p是一级指针,int (*p)[4]这就是二级指针了。所以你才能将&arr赋值给p
输出时,*p是找到arr的内存,然后*(*p + 1)就是从arr里面的值(arr的值就是数组中每个元素的地址)再找到每个元素的内存,从而读取中每个元素内存中的值。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2