2316829671 发表于 2019-2-20 15:11:36

关于指针数组和数组指针的一些问题

问题如图



原来代码
#include <stdio.h>

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

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

      return 0;
}

#include <stdio.h>

int main()
{
      char *array = {"FishC", "Five", "Star", "Good", "WoW"};
      char *(*p) = &array;
      int i, j;

      for (i = 0; i < 5; i++)
      {
                for (j = 0; (*p) != '\0'; j++)
                {
                        printf("%c ", (*p));
                }
                printf("\n");
      }

      return 0;
}

zhuang123 发表于 2019-2-20 16:21:51

int (*p2) 定义一个指向5个整型空间的指针
*(*p2+i)   *p2是指向一个整体(5个整型空间,是一个地址),i则是的偏移地址,指向整体里面的哪一位;最外面的取这个地址的值

*array和*(*p),前面都多了一个*,所以char *(*p) 定义一个指向5个字符空间的指针的指针(跟前面的对比一下),就是指向上一题所说那个整体的每一个元素的地址(每一个字母的地址)。
而(*p),其实也可以理解为一个二维数组,p是一个指针,所以前面才要加*。
理解指针的指向,要看要具体被赋值的结构是怎么样的,才容易理解。

行客 发表于 2019-2-20 18:10:39

请看一下这个帖子的我的回复。如果有不明白的地方请继续跟帖。
https://fishc.com.cn/thread-130908-1-1.html
页: [1]
查看完整版本: 关于指针数组和数组指针的一些问题