| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1947 人关注过本帖
标题:求助帖【C语言数组】
只看楼主 加入收藏
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
收藏
得分:0 
char a[9] = {"123456789"};
数组长度为9,而且是字符数组还是字符串数组,要看你初始化赋值的方式,用""的说明是字符串,用''才是字符。
因此你申明了长度为9的长度,把字符串"123456789"赋值进去,但问题是编译器会最后在字符串尾补上'\0',但你赋值的内容已经超出可容纳的长度9,因此'\0'没有空间存放造成数组以字符串输出时溢出,直到在后面内存中读到0值或'\0'的内容,误认为结束为止。
所以解决办法是要么数组增加1位,要么初始值减少1位。

[此贴子已经被作者于2018-2-2 13:15编辑过]

2018-02-02 13:13
Jeyyion_han
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:207
专家分:301
注 册:2018-1-22
收藏
得分:0 
我都不想说,你定义数组为什么不定义大一点的,不然有时候像你这样a[9]="123456789",请问\0放在什么地方,所以你编译的时候报了overflow的错误。
2018-02-02 20:00
快速回复:求助帖【C语言数组】
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016618 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved