带你学c带你飞的课后作业S1E23的一道题,求解答
我看不太懂char *array = {"FishC", "Five", "Star", "Good", "WoW"};
char *(*p) = &array;的意思,求讲解一下整段代码的索引
#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;
} C语言复杂声明解析
http://blog.chinaunix.net/uid-29208421-id-5183647.html
当你看懂这篇文章以后,你就再也不会问这类问题了,因为你真的已经理解了
这篇文章不难,花点时间看一看
人造人 发表于 2018-1-12 23:33
C语言复杂声明解析
http://blog.chinaunix.net/uid-29208421-id-5183647.html
为啥这网址我打不开{:5_92:}
winkyboy 发表于 2018-1-12 23:55
为啥这网址我打不开
我可以打开呀
当i=0时 *p + i 是取出"FishC"的首地址,*(*p + i) + j 是指向"FishC"字符串中的F字母的首地址,也就是说i控制显示第几个字符串,j控制字符串一个一个的显示出来。*(*(*p + i) + j)) 指向地址中的数据就是 F(当i=0,j=0时)。以此类推。我是这么理解不知说清楚么. hogen 发表于 2018-1-13 00:04
当i=0时 *p + i 是取出"FishC"的首地址,*(*p + i) + j 是指向"FishC"字符串中的F字母的首地址,也就是说i ...
或者把它理解为二维数组思路是一样的 hogen 发表于 2018-1-13 00:25
或者把它理解为二维数组思路是一样的
为什么不是 char **p而是 char *(*p)呢 人造人 发表于 2018-1-13 00:04
我可以打开呀
为什么不是 char **p而是 char *(*p)呢 人造人 发表于 2018-1-12 23:33
C语言复杂声明解析
http://blog.chinaunix.net/uid-29208421-id-5183647.html
已解决 本帖最后由 hogen 于 2018-1-14 19:34 编辑
winkyboy 发表于 2018-1-13 08:27
为什么不是 char **p而是 char *(*p)呢
(*p) 数组里存放的是具体的数据。*p 数组里存放的是地址。
页:
[1]