呼噜呼噜毛 发表于 2021-3-8 15:56:48

课后作业求助

本帖最后由 呼噜呼噜毛 于 2021-3-8 16:09 编辑

#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;
}
为什么定义数组指针的时候还要多用一个*?

洋洋痒 发表于 2021-3-8 16:29:23

char *(*p)
*p表示p是一个指针
(*P)表示指针p指向一个含有5个元素的数组([]优先级大于*,所以(*p)先和结合)
char *(*p) 表示p指向的数组每个元素都是char*型

而array数组就是一个含有5个元素,并且每个元素都是char*类型的数组
所以p指向array数组没毛病


如果去掉前边的*就表示指针p指向一个5个元素的数组,并且数组每个元素都是char型

所以必须要带*

页: [1]
查看完整版本: 课后作业求助