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;
} 这句有问题:
#define NUM = 5
应该改成这样:
#define NUM 5 jackz007 发表于 2019-4-18 21:45
这句有问题:
应该改成这样:
啊,没注意看宏定义,多谢啦~ 本帖最后由 YiMingC 于 2019-4-18 22:12 编辑
jackz007 发表于 2019-4-18 21:45
这句有问题:
应该改成这样:
等一下...还是不太理解二维数组,请问一下为什么上图代码在17行输出的时候只需要一位索引值就可以导出这5个字符串呢?难道不应该是存放在slogans、slogans、slogans、slogans、slogans这五个位置吗...
甲鱼老师在课里说二位数组也是线性存放的,
如果对于char slogans
那我可不可以理解成slogans=slogans呢
但是我自己试了一下好像不能直接使用slogans这样的,不太理解老师代码的原理,麻烦您了。 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) ;
}
jackz007 发表于 2019-4-18 23:15
char slogans ; 定义了一个二维字符数组,用于保存不超过 NUM 个字符串,每个字符串的长度 ...
明白了,谢谢啦~
页:
[1]