c语言基础题

来源:百度知道 编辑:UC知道 时间:2024/05/21 21:55:41
main()
{char *alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};
char **p;int i;
p=alpha;
for(i=0;i<4;i++)printf("%s",p);printf("\n")}
运行结果是什么?
此题在我这运行成了"∏∏∏∏"的结果
分号我知道
为什么?

因为p是指向指针的指针,如果直接使用p来输出字符串,p指向的是数组alpha所在内存,这块内存存放的是指向那6个字符串的指针,所以显示出来的字符是不定的,而p[i]相当于alpha[i],得到的值是指向字符串的指针,所以就能正确显示出字符串了

printf("%s",p);
要改成
printf("%s",p[i]);
另外,最后一句printf("\n"),你少了个分号
下面是编译并测试通过的代码:
#include <stdio.h>
void main()
{
char *alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};
char **p;
int i;
p=alpha;
for(i=0;i<6;i++)
printf("%s",p[i]);
printf("\n");
}

运行结果为:
LLLL

如果把
for(i=0;i<4;i++)printf("%s",p);换成
for(i=0;i<4;i++)printf("%s",*p);这样运行结果是:ABCDABCDABCDABCD
如果for(...)printf("%s",*p);换成
for(i=0;i<4;i++)
{
printf("%s",*p);
P++;
}
运行结果就是:ABCDEFGHIJKLMNOP