鱼C论坛

 找回密码
 立即注册
查看: 1561|回复: 5

[已解决]20课课后题

[复制链接]
发表于 2019-4-18 21:24:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码如下,
我一开始的问题是:那五个字符串是不是存放在slogans[0][0]、slogans[0][1]、slogans[0][2]、slogans[0][3]、slogans[0][4]这五个位置,然后敲了一下代码,一模一样但是一直报错,请问是什么原因?
#include <stdio.h>

#define NUM = 5

int main()
{
        char slogans[NUM][100] = {
                "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[i]);
        }


        return 0;
}             
最佳答案
2019-4-18 21:45:48
这句有问题:
#define NUM = 5
应该改成这样:
#define NUM 5
S1E20_cst_3.png
S1E20_cst_3_2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-18 21:45:48 | 显示全部楼层    本楼为最佳答案   
这句有问题:
#define NUM = 5
应该改成这样:
#define NUM 5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-18 22:04:00 | 显示全部楼层
jackz007 发表于 2019-4-18 21:45
这句有问题:

应该改成这样:

啊,没注意看宏定义,多谢啦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-18 22:09:19 | 显示全部楼层
本帖最后由 YiMingC 于 2019-4-18 22:12 编辑
jackz007 发表于 2019-4-18 21:45
这句有问题:

应该改成这样:


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

甲鱼老师在课里说二位数组也是线性存放的,
如果对于char slogans[5][100]
那我可不可以理解成slogans[3][100]=slogans[300]呢
但是我自己试了一下好像不能直接使用slogans[300]这样的,不太理解老师代码的原理,麻烦您了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

#define NUM 5

int main()
{
        char slogans[NUM][100] = {
                "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) ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-18 23:19:44 | 显示全部楼层
jackz007 发表于 2019-4-18 23:15
char slogans[NUM][100] ; 定义了一个二维字符数组,用于保存不超过 NUM 个字符串,每个字符串的长度 ...

明白了,谢谢啦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 14:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表