C语言的新手问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 10:21:35
#include<stdio.h>
void main()
{char *name[]={"hi","Follow me","Great Wall"};
char **p;
int i;
for(;i<3;i++)
{p=name+i;
printf("%s\n",*p) /*这里为什么是*p,而不是**p???*/
}
}

#include<stdio.h>
void main()
{char *name[]={"hi","Follow me","Great Wall"};
char **p;
int i=0;
for(;i<3;i++)
{p=name+i;
printf("%s\n",*p) /*这里为什么是*p,而不是**p???*/
}
}
name是一个存放指针的数组
name[0] = "hi"的地址
name[1] = "Follow me""的地址
name[2] = "Great Wall"的地址

而printf("%s\n",*p)的第二个参数要求为要输出字符串的地址,所以当然应该为*p了,如果**p则为以下情况:
i = 0 时 **p 等价于 "hi"
i = 1 时 **p 等价于 Follow me"
i = 2 时 **p 等价于 "Great Wal"

*是无效字符 几个都无所谓
但是循环for(;i<3;i++)是有错误的
i没有初始化赋值
也就是说i是个随机值
无法实现程序的i<3的3次循环
多上机调试
实践出真理
希望你将来能成为内嵌语言精英