lsy358027330 发表于 2020-12-23 22:17:50

关于数组指针和指针数组

#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;
}

就是这个第二行的char *(*p) = &array;到底怎么理解,array为什么还能取地址?取得是整个数组的地址吗?那前面的数组指针为什么要用char *(*p),孩子被这一行困扰好久了{:5_99:}

风过无痕1989 发表于 2020-12-23 22:25:36

& 在这里不是取地址,它表示取数组的指针

lsy358027330 发表于 2020-12-23 22:26:34

风过无痕1989 发表于 2020-12-23 22:25
& 在这里不是取地址,它表示取数组的指针

那前面的{:5_99:}

风过无痕1989 发表于 2020-12-23 22:38:53

lsy358027330 发表于 2020-12-23 22:26
那前面的

char *(*p)应该这么来理解:括号中的 * 表示 p 是一个指针,括号外面的 int * 表示 p 指向的数据的类型。array第 0 个元素的类型为 int *,所以在定义 p时要加两个 *。

lsy358027330 发表于 2020-12-23 22:41:42

风过无痕1989 发表于 2020-12-23 22:38
char *(*p)应该这么来理解:括号中的 * 表示 p 是一个指针,括号外面的 int * 表示 p 指向的数据的类 ...

哦哦,好的,这样就好理解多了{:5_108:}
页: [1]
查看完整版本: 关于数组指针和指针数组