投入就放过 发表于 2021-3-12 21:11:25

课后作业26 测试题第四题

#include <stdio.h>

int main()
{
        char *pArray={
                "Hello!",
                "How are you?",
                "Fine,thank you.And you?",
                "I am fine too."};
        char **p;
        int i;
       
        p=&pArray;
        p=&pArray;
        p=&pArray;
        p=&pArray;
       
        for(i=0;i<4;i++)
        {
                printf("%s\n",*p);
        }
       
        return 0;
}

为什么这代码运行没有结果哪里出错了呢???

chxchxkkk 发表于 2021-3-13 00:45:53

两个问题
1、
      p=&pArray;
      p=&pArray;
      p=&pArray;
      p=&pArray;
      此时,p指向指针数组里最后一项也就是"I am fine too."的首地址,
      只能用 printf("%s\n", *p);来输出 I am fine too.
      而用循环显然不行的,会报错
2、
    p = &pArray;
   // p = &pArray;
   // p = &pArray;
   // p = &pArray;

    for (i = 0; i < 4; i++)
    {
      //printf("%s\n", *p);这里不能用*,因为p是一行字符串的首地址,用*号只能得到这一行字符串的第一个字符
      printf("%s\n", p);
      //如果非要用*号,也只能这样 printf("%s\n", *(p+i));
    }
   

投入就放过 发表于 2021-3-13 10:07:40

chxchxkkk 发表于 2021-3-13 00:45
两个问题
1、
      p=&pArray;


谢谢回答,很详细
页: [1]
查看完整版本: 课后作业26 测试题第四题