huashengzi 发表于 2020-8-30 22:04:38

带你学C带你飞 数组指针

#include <stdio.h>

int main()
{
      char temp = {1,2,3,4,5};
      char (*p2) = &temp;
      int i;

      for (i = 0; i < 5; i++)
      {
               
            printf("%d\n", *(*p2 + i) );

      }

      return 0;
}

不太懂,尤其此句
printf("%d\n", *(*p2 + i) );
*p2取出的是什么,+i又变成什么?

一般的指针变量 如*str="abcde"
*(str+1)这样就很好理解。、
但是上面数组指针的*p2取出的是什么我难以理解,求指导。

baige 发表于 2020-8-30 22:11:16

https://fishc.com.cn/thread-161320-1-1.html

baige 发表于 2020-8-31 07:02:59

https://fishc.com.cn/forum.php?mod=viewthread&tid=159291&highlight=%CA%FD%D7%E9%D6%B8%D5%EB

4goodworld 发表于 2020-9-3 15:24:39

p2这个是二级指针,
*p2 解引用,返回的是一级指针,这才是temp = {1,2,3,4,5}; 也就是*p指向的是temp的数组地址上,那么*p2+1,就想当于指向temp数组的第二个元素所在的地址,类推
然后
*(*p2 + i)对(*p2 + i)进行解引用,不就是取出当前数组地址上的值吗?如果是*(*p2 + 1) 不就是取2吗?
你的困扰点我觉得是
你要记住,你如果能把数组与一级指针联系,那么对数组取地址,是不是应该是二级指针?

风过无痕1989 发表于 2020-9-4 01:35:00

打开看看三楼的那个链接,你就什么都清楚了

页: [1]
查看完整版本: 带你学C带你飞 数组指针