首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一维数组初始化有关问题

2012-04-15 
一维数组初始化问题char array[5] {a,b,c,d,e}这样可以,系统会自动在后面加\0而且不会越界

一维数组初始化问题
char array[5] = {'a','b','c','d','e'};这样可以,系统会自动在后面加'\0'而且不会越界,长度还是5
但我不明白为什么
char array[5] = "abcde";就会数组越界呢.
请大家帮忙解释一下.谢谢!

[解决办法]
初始化的意思是把右边的东西往左边拷。"abcde"这样的东西存在于数据段,本身就有0,因此一共有6个字符。char array[5] = "abcde"生成的代码就是,给array分配5个字符的空间,然后把数据段中"abcde"这6个字符拷贝到array中。由于array只有5个字符的空间,因此越界。所以,不存在什么加不加0的问题。
C/C++中,凡是字符串都有结尾0。因此在任何给字符串分配空间的场合,都要多分配一个字符(注意是一个字符,不一定是一个字节)。

热点排行