一个C语言关于数组的问题,求解答

charstr[9]={"good,bye"};//这里只有8个字符,问什么数组的元素个数必须要是9呢?改成8就出现错误了charstr[2][9]={"good,bye... char str[9]={"good,bye"};//这里只有8个字符,问什么数组的元素个数必须要是9呢?改成8就出现错误了

char str[2][9]={"good,bye"};//这个二维数组是2行9列,那就可以存18个字符啊?但是为什么如果改为[2][8]就不正确了。而且我觉得存储8个字符用[2][4]就够了啊。

还有两个小问题 就是char (*s1)[10] 这条语句是什么意思?是定义了一个指针?

puts(s1[0]);
puts(s1[1]);
这两个语句又是什么意思
展开
 我来答
令兰芝0Hu
2015-02-10 · TA获得超过135个赞
知道小有建树答主
回答量:213
采纳率:100%
帮助的人:137万
展开全部
1 第一个问题, 每个字符串末尾都默认有一个'\0'字符,因此声明的时候多一个字符
2 二维数组初始化,不指定第一行,和第二行,默认之存储在第一行,第二行全部为零
char str[2][9]={"good,bye","good,bye"};这样就可以了,和第一中情况一样,就不能改为[2][8]

3 定义了一个数组指针,可以指向一位数组,比如:
char *p;
char (*s1)[10];

p=s1;
那么p[0]就相当s1[0],p[2]就相当于s1[2]以此类推
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e571edf
2015-02-10 · 超过32用户采纳过TA的回答
知道答主
回答量:78
采纳率:50%
帮助的人:68.3万
展开全部
C语言字符串默认会在末尾加一个字符'\0'表示字符串结束,所以需要9个字符
二维数组一样的道理
char(*s1)[10]表示定义char类型的指针数组,就是10个char类型的指针
puts(s1[0]) 表示从把s1中串输出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
greengree
2015-02-10 · TA获得超过260个赞
知道小有建树答主
回答量:233
采纳率:0%
帮助的人:193万
展开全部
字符数组要比实际字符数多出一个,是给'\0'留的位置,不然无法判断在哪里结束字符串。

二维数组也是这个道理。

char (*s1)[10] 定义的是指针数组s1,数组s1的元素类型是指向字符的指针,也就是字符串。

puts()函数就是输出字符串,puts(s1[n])就是输出数组s1的某个元素。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shamoguo
2015-02-10 · TA获得超过103个赞
知道小有建树答主
回答量:233
采纳率:0%
帮助的人:136万
展开全部
  1. 字符后边系统会自动加一个‘\0’,所以需要多一个空间

  2. 你那样赋值,只会把那8个字符赋给第一个数组

  3. 第一了一个指针数组

  4. puts是输出吗?我不常用C语言的函数。那么那两句的意思分别是输出s1数组里第一个和第二个数据

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lajibaodu
2015-02-10 · TA获得超过1068个赞
知道小有建树答主
回答量:694
采纳率:100%
帮助的人:301万
展开全部
第一个问题,因为字符串是以\0结尾的,没有\0就没有结尾,所以比看上去多一个字符。
第二个问题,这个是二维数组是一个2行9列的表格差不多~所以也是会报错~因为他的初始化格式的{“....”,“....”}你的还是算一个的~
追问
第二个问题还不太明白- -!能否再详细一点 good,bye
就算这个字符串实际是有9个字符,但是二维数组用[2][5]也不行吗?
追答
char str[2][9]={"good,bye"};在初始化的时候如果的格式是={"good,bye","good,bye"}这样子才是全部初始化,那显而易见的就是,你的只是初始化了第一个对不对,那第一个你定义少了是不是还是报错呢~
char (*s1)[10] 是定义了一个指针,指向的是一个数组,puts是输出~就是输出s1的第一个和第二个值
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式