啊涂涂 发表于 2018-9-19 19:32:53

还是指针..

#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 + i) + j) != '\0'; j++)
                {
                        printf("%c ", *(*(*p + i) + j));
                }
                printf("\n");
      }

      return 0;
}
求大神详细推理解释一下 *(*(*p + i) + j)) 这一句,实在是看不懂

claws0n 发表于 2018-9-19 19:42:26

所以三天前的指针你根本没弄懂就选最佳答案了...

啊涂涂 发表于 2018-9-19 19:58:52

迷醉之中...,我是一会懂一会还是不懂,当时感觉是真懂了

啊涂涂 发表于 2018-9-19 19:59:24

claws0n 发表于 2018-9-19 19:42
所以三天前的指针你根本没弄懂就选最佳答案了...

过了两天发现还是没懂

claws0n 发表于 2018-9-19 20:06:54

char *array; // 括号的优先级最高,所以 array 是数组,数组的元素是指向字符型的指针。
char *(*p); // 上次没有最左边* 的就当作你明白了,不解释{:10_256:},所以这次加了一个*,应该理解为 p 是一个指向【指向字符型且跨度为5的指针】的指针。

解引用是最内层的开始解,第一层是数组本身,i 为偏移。因为字符串也是数组构成的,也是可以用指针操作{:10_256:},然后 j 是字符串的偏移。最外层的解引用是把指针转成字符串的内容。

claws0n 发表于 2018-9-19 23:23:40

啊涂涂 发表于 2018-9-19 19:59
过了两天发现还是没懂

不懂就多问,问到懂为止

啊涂涂 发表于 2018-9-20 11:04:20

char *(*p)第一个星号是不是就代表指针p指向的数组里面的内容是指针的类型?

claws0n 发表于 2018-9-21 22:37:23

啊涂涂 发表于 2018-9-20 11:04
char *(*p)第一个星号是不是就代表指针p指向的数组里面的内容是指针的类型?

正!
页: [1]
查看完整版本: 还是指针..