A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hanqiuiu 中级黑马   /  2015-8-11 23:27  /  509 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#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))啊?哪位同学给我讲讲啊

1 个回复

倒序浏览
你这里使用了一个二级指针。int * p是一级指针,int (*p)[4]这就是二级指针了。所以你才能将&arr赋值给p
输出时,*p是找到arr的内存,然后*(*p + 1)就是从arr里面的值(arr的值就是数组中每个元素的地址)再找到每个元素的内存,从而读取中每个元素内存中的值。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马