代码爱我 发表于 2019-11-17 22:18:18

指针

int temp={1,2,3,4,5};
int (*p2)=&temp;
int i;
for(i=0;i<5;i++){
        printf("%d \n",*(*p2 +i));
}


其中*(*p2 +i) 如何理解使用两个*

倒戈卸甲 发表于 2019-11-17 22:42:47

本帖最后由 倒戈卸甲 于 2019-11-17 22:47 编辑

小甲鱼的带你学c带你飞视频,指针数组与数组指针,指针与二维数组这两节去看一遍吧。还是看后面这一节吧,小甲鱼好像讲指针与二维数组时回顾了数组指针的用法。

代码爱我 发表于 2019-11-17 23:09:51

倒戈卸甲 发表于 2019-11-17 22:42
小甲鱼的带你学c带你飞视频,指针数组与数组指针,指针与二维数组这两节去看一遍吧。还是看后面这一节吧, ...

就是看完了不太懂。这个代码就是抄他的{:10_266:}

jackz007 发表于 2019-11-17 23:15:33

本帖最后由 jackz007 于 2019-11-17 23:19 编辑

      这一句
      int (*p2) ;
      定义 p2 是一个指向末维为 5 的整型数组的指针, p2 的步进单位是 5 个 int,就是说 p2 的数值每增减 1 个单位就是在内存中前进或后退 5 个整型数存储空间的跨度。
      * p2 是指针的降维操作, * p2 的类型是 int *,所以,* p2 的步进单位是 1 个整型数的存储空间。所以,* p2 + i 指向从地址 * p2 开始的后面第 i 个整数,那么,* (* p2 + i) 自然就是提取存储单元的数值了。由于
      int (*p2)=&temp;
      * p2 指向了一维数组 temp,那么,* (* p2 + i)与 temp[ i ] 的表达效果完全一样,就是说,p2 可以像 temp 一样表达和使用。
页: [1]
查看完整版本: 指针