| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 832 人关注过本帖
标题:莱鸟问题啊+++
取消只看楼主 加入收藏
liangwenbc
Rank: 3Rank: 3
来 自:广州
等 级:论坛游侠
帖 子:168
专家分:174
注 册:2008-6-11
结帖率:75%
收藏
已结贴  问题点数:5 回复次数:4 
莱鸟问题啊+++
书上不是说“采用字符串常量的方式赋初值,必须注意数组长度最少要比字符串的有效字符数多1”吗?
char a[2]={"12"};
为什么我在某程序中用如上的语句编译时都不会出错的?(用的是TC2.0)
搜索更多相关主题的帖子: 问题 字符串 
2009-11-17 02:23
liangwenbc
Rank: 3Rank: 3
来 自:广州
等 级:论坛游侠
帖 子:168
专家分:174
注 册:2008-6-11
收藏
得分:0 
以下是引用zqb7899在2009-11-17 11:12:21的发言:

char a[2]={"12"};其元素a[0]='1',a[1]='2’.
char a[]={"12"};其元素a[0]='1',a[1]='2’,a[2]='\0'。
char a[2]={"12"};其元素a[0]='1',a[1]='2’这句定义数组a有2个元素,然后用字符串赋值a[0]和a[1]的值分别是1和2,那'\0'不是没地方放了吗,但是调试的时候为什么没有出错呢

qq7434391
2009-11-17 12:19
liangwenbc
Rank: 3Rank: 3
来 自:广州
等 级:论坛游侠
帖 子:168
专家分:174
注 册:2008-6-11
收藏
得分:0 
以下是引用万改称才在2009-11-17 12:48:37的发言:

定义字符  最好   char a[]=“”  不要在[]里写东西
就是这个问题啊,char a[2]={"12"};其元素a[0]='1',a[1]='2’这句定义数组a有2个元素,然后用字符串赋值a[0]和a[1]的值分别是1和2,那'\0'不是没地方放了吗,但是调试的时候为什么没有出错呢

qq7434391
2009-11-17 12:54
liangwenbc
Rank: 3Rank: 3
来 自:广州
等 级:论坛游侠
帖 子:168
专家分:174
注 册:2008-6-11
收藏
得分:0 
以下是引用陈大师在2009-11-17 13:26:37的发言:

系统在分配内存存放字符串时,会在字符串最后自动生成一个空间放'\0'
书上不是说“采用字符串常量的方式赋初值,必须注意数组长度最少要比字符串的有效字符数多1”吗?

qq7434391
2009-11-17 13:49
liangwenbc
Rank: 3Rank: 3
来 自:广州
等 级:论坛游侠
帖 子:168
专家分:174
注 册:2008-6-11
收藏
得分:0 
以下是引用UserYuH在2009-11-17 14:09:47的发言:

a[2]={"12"};
puts(a);  这会输出:12加后一堆乱码,假如a[1]的下个地址值是0,输出看似正常。
"12"含 '1' '2' '\0' 用只有两元素的数组a是错误的,但TC编译不会报错,TC里甚至下标越界也不报错,如只有两元素的数组 ...
谢谢了

qq7434391
2009-11-17 15:10
快速回复:莱鸟问题啊+++
数据加载中...
 
   



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

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