|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main()
{
char *pArray[4]={
"Hello!",
"How are you?",
"Fine,thank you.And you?",
"I am fine too."};
char **p;
int i;
p=&pArray[0];
p=&pArray[1];
p=&pArray[2];
p=&pArray[3];
for(i=0;i<4;i++)
{
printf("%s\n",*p[i]);
}
return 0;
}
为什么这代码运行没有结果哪里出错了呢???
两个问题
1、
p=&pArray[0];
p=&pArray[1];
p=&pArray[2];
p=&pArray[3];
此时,p指向指针数组里最后一项也就是"I am fine too."的首地址,
只能用 printf("%s\n", *p);来输出 I am fine too.
而用循环显然不行的,会报错
2、
p = &pArray[0];
// p = &pArray[1];
// p = &pArray[2];
// p = &pArray[3];
for (i = 0; i < 4; i++)
{
//printf("%s\n", *p[i]); 这里不能用*,因为p[i]是一行字符串的首地址,用*号只能得到这一行字符串的第一个字符
printf("%s\n", p[i]);
//如果非要用*号,也只能这样 printf("%s\n", *(p+i));
}
|
|