姬世鹏 发表于 2019-11-24 18:52:37

搞不懂第二种初始化的情况

第一种:
#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;
}

ba21 发表于 2019-11-24 18:52:38

int temp = {1, 2, 3, 4, 5};
int (*p2) = &temp;//这里的初始化明白

char *array] = {"FishC", "Five", "Star", "Good", "WoW"};
char *(*p) = &array;//这里的初始化为什么要二次取值?

先看红色,再去理解为什么还要加*

bin554385863 发表于 2019-11-24 19:22:41

好好在学一学数组指针把,多看看书或者多查查网上关于数组指针的资料;一个一维数组的指针,一个二维数组的指针你就不明白了?

jackz007 发表于 2019-11-24 19:40:35

本帖最后由 jackz007 于 2019-11-24 19:47 编辑

      char array 定义 array 是有 5 个整型数元素的一维数组,那么,& array 则代表末维为 5 的二维整型数组,从而,和 char (* p) 定义的指向末维为 5 的二维整型数组的指针 p 的类型相契合。
      如果通过 & array 来表达 array,那么,array 可以用 & array 表达,array 可以用 & array 表达。

姬世鹏 发表于 2019-11-25 16:11:15

bin554385863 发表于 2019-11-24 19:22
好好在学一学数组指针把,多看看书或者多查查网上关于数组指针的资料;一个一维数组的指针,一个二维数组的指 ...

我会好好再看看的,谢谢啦

姬世鹏 发表于 2019-11-25 16:12:15

jackz007 发表于 2019-11-24 19:40
char array 定义 array 是有 5 个整型数元素的一维数组,那么,& array 则代表末维为 5 的二维 ...

读懂了,谢谢,但觉得举例子更容易理解。’
页: [1]
查看完整版本: 搞不懂第二种初始化的情况