Jacksturdy 发表于 2020-10-3 20:09:59

新手求助

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

能有人解释一下 for (j = 0; *(*(*p + i) + j) != '\0'; j++)中三个*号分别代表什么吗,刚学指针,脑子都大了

Jacksturdy 发表于 2020-10-3 20:20:40

单独的p代表整个array数组的地址,*p等价于数组名array又等价于数组array第一个元素的地址,因为array第一个元素也是一个数组,因此**p等价于数组array第一个元素(我们称为数组array-1)的数组名等价于array-1的第一个元素的地址,***p等价于array-1的第一个元素的地址所对应的值。不知我这个理解对不对

lhgzbxhz 发表于 2020-10-4 11:07:37

*p == array
*p + i == &(array)
*(*p + i) == array
*(*p + i) + j == &(array)
*(*(*p + i) + j) == array
页: [1]
查看完整版本: 新手求助