minamikotori 发表于 2020-12-21 23:53:03

几个有关小甲鱼代码的简单指针问题

#include <stdio.h>

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

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

      return 0;
}

小甲鱼代买中这里第六行中 定义的指针是什么意思 为什么这么定义?
是指这个数组指针的指针吗
指针p存放的是谁的地址
p和*p存放的地址为什么是相同的??

风过无痕1989 发表于 2020-12-22 00:46:58

*array 定义的是一个一维指针数组,*array 表示 array 是一个指针; 表示指针指向的对象的类型是具有五个元素的数组,每个元素都是指针,分别指向5个字符串
p 是指向 array 的指针, *p = *p + 0 = *p = array,array 与 array 是等价的,于是,p 与 *p 也是等价的,都是指向 array 的

minamikotori 发表于 2020-12-22 23:43:35

本帖最后由 minamikotori 于 2020-12-22 23:46 编辑

风过无痕1989 发表于 2020-12-22 00:46
*array 定义的是一个一维指针数组,*array 表示 array 是一个指针; 表示指针指向的对象的类型是具有 ...

array 可以看作是(array)吗是array这个数组的指针吗
那(*p)() 该怎么理解呢

minamikotori 发表于 2020-12-22 23:51:11

风过无痕1989 发表于 2020-12-22 00:46
*array 定义的是一个一维指针数组,*array 表示 array 是一个指针; 表示指针指向的对象的类型是具有 ...

还是说array指得是 p指向指针数组然后 数组里面的指针分别指向了array里面的每个字符?

风过无痕1989 发表于 2020-12-22 23:56:21

minamikotori 发表于 2020-12-22 23:51
还是说array指得是 p指向指针数组然后 数组里面的指针分别指向了array里面的每个字符?

“array指得是 p指向指针数组”,这可不一定,要看你怎么定义的指针

后面的说法没有错

minamikotori 发表于 2020-12-22 23:59:58

风过无痕1989 发表于 2020-12-22 23:56
“array指得是 p指向指针数组”,这可不一定,要看你怎么定义的指针

后面的说法没有错

多谢大佬{:10_275:}

风过无痕1989 发表于 2020-12-23 00:00:31

minamikotori 发表于 2020-12-22 23:59
多谢大佬

不必客气
页: [1]
查看完整版本: 几个有关小甲鱼代码的简单指针问题