|  | 
 
| 
#include <stdio.h>
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 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));
 }
 
 
 | 
 |