黑马程序员技术交流社区

标题: 关于用指针打印一个数组 [打印本页]

作者: 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