YiMingC 发表于 2019-4-18 21:24:14

20课课后题

代码如下,
我一开始的问题是:那五个字符串是不是存放在slogans、slogans、slogans、slogans、slogans这五个位置,然后敲了一下代码,一模一样但是一直报错,请问是什么原因?

#include <stdio.h>

#define NUM = 5

int main()
{
      char slogans = {
                "I love FishC.com!",
                "Keep moving!",
                "Impossible is nothing!",
                "Just do it!",
                "I am what I am!"};
      int i;

      for (i = 0;i < NUM ; i++)
      {
                printf("%s\n",slogans);
      }


      return 0;
}            

jackz007 发表于 2019-4-18 21:45:48

这句有问题:
#define NUM = 5
应该改成这样:
#define NUM 5

YiMingC 发表于 2019-4-18 22:04:00

jackz007 发表于 2019-4-18 21:45
这句有问题:

应该改成这样:

啊,没注意看宏定义,多谢啦~

YiMingC 发表于 2019-4-18 22:09:19

本帖最后由 YiMingC 于 2019-4-18 22:12 编辑

jackz007 发表于 2019-4-18 21:45
这句有问题:

应该改成这样:

等一下...还是不太理解二维数组,请问一下为什么上图代码在17行输出的时候只需要一位索引值就可以导出这5个字符串呢?难道不应该是存放在slogans、slogans、slogans、slogans、slogans这五个位置吗...

甲鱼老师在课里说二位数组也是线性存放的,
如果对于char slogans
那我可不可以理解成slogans=slogans呢
但是我自己试了一下好像不能直接使用slogans这样的,不太理解老师代码的原理,麻烦您了。

jackz007 发表于 2019-4-18 23:15:35

      char slogans ; 定义了一个二维字符数组,用于保存不超过 NUM 个字符串,每个字符串的长度不超过 99 个字符(最后必须预留一个位置保存字符串结尾标志'\0')。这个数组总共会占用 100 x NUM 个字节,编译程序会按 100 的整数倍来定位和访问每个字符串,slogans 开始的 100 字节的存储单元用于保存第一个字符串,随后 slogans 开始的 100 字节的存储单元用于保存第二个字符串,依此类推,slogans 开始的 100 个字节单元用于保存最后一个字符串。
#include <stdio.h>

#define NUM 5

int main()
{
      char slogans = {
                "I love FishC.com!",
                "Keep moving!",
                "Impossible is nothing!",
                "Just do it!",
                "I am what I am!"}                                                       ;
      char* p                                                                        ;
      int i                                                                            ;

      for (p = (char *) slogans , i = 0 ; i < NUM ; i ++) printf("%s\n" , p + 100 * i) ;
}

YiMingC 发表于 2019-4-18 23:19:44

jackz007 发表于 2019-4-18 23:15
char slogans ; 定义了一个二维字符数组,用于保存不超过 NUM 个字符串,每个字符串的长度 ...

明白了,谢谢啦~
页: [1]
查看完整版本: 20课课后题