char **q,不明白为什么要定义指针的指针
#include
void main()
{
char *s[]={"man","woman","girl","boy","sister"};
char **q;
int k;
for(k=0;k<5;k++)
{
q=s+k;
printf("%s\n",*q);
}
}
man
woman
girl
boy
sister
请按任意键继续. . .
char *s[]={"man","woman","girl","boy","sister"};这里定义了指针数组,数组内存放的是四个指针
*q就能取出里面的单词的时候,定义**q是为什么,不定义又不能输出正确结果
这么和你说吧,char *a = "string"
会先创建一个内存存放字符串"string"。然后再让你的指针a指向这个字符串开始的位置。
同理 char *s[]={"man","woman","girl","boy","sister"};
就是创建了一个指针列表。
当你单独写s时,s返回的是 地址 , 相当于&s[0]
这个的结果也就是存放s[0]这个指针的地址。所以你需要用二级的指针去获取。