还是指针..
#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
所以三天前的指针你根本没弄懂就选最佳答案了...
过了两天发现还是没懂 char *array; // 括号的优先级最高,所以 array 是数组,数组的元素是指向字符型的指针。
char *(*p); // 上次没有最左边* 的就当作你明白了,不解释{:10_256:},所以这次加了一个*,应该理解为 p 是一个指向【指向字符型且跨度为5的指针】的指针。
解引用是最内层的开始解,第一层是数组本身,i 为偏移。因为字符串也是数组构成的,也是可以用指针操作{:10_256:},然后 j 是字符串的偏移。最外层的解引用是把指针转成字符串的内容。 啊涂涂 发表于 2018-9-19 19:59
过了两天发现还是没懂
不懂就多问,问到懂为止 char *(*p)第一个星号是不是就代表指针p指向的数组里面的内容是指针的类型? 啊涂涂 发表于 2018-9-20 11:04
char *(*p)第一个星号是不是就代表指针p指向的数组里面的内容是指针的类型?
正!
页:
[1]