| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 832 人关注过本帖
标题:莱鸟问题啊+++
只看楼主 加入收藏
liangwenbc
Rank: 3Rank: 3
来 自:广州
等 级:论坛游侠
帖 子:168
专家分:174
注 册:2008-6-11
结帖率:75%
收藏
已结贴  问题点数:5 回复次数:10 
莱鸟问题啊+++
书上不是说“采用字符串常量的方式赋初值,必须注意数组长度最少要比字符串的有效字符数多1”吗?
char a[2]={"12"};
为什么我在某程序中用如上的语句编译时都不会出错的?(用的是TC2.0)
搜索更多相关主题的帖子: 问题 字符串 
2009-11-17 02:23
lyitem000
Rank: 2
等 级:论坛游民
帖 子:15
专家分:18
注 册:2009-11-15
收藏
得分:0 
回复 楼主 liangwenbc
楼主的语句是对a[0]赋值12吧,刚学了数组,我也不是很清楚
2009-11-17 09:40
hn512391832
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2009-11-17
收藏
得分:0 
我也不太会,有会的,帮忙回答下
2009-11-17 10:51
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
收藏
得分:0 
char a[2]={"12"};其元素a[0]='1',a[1]='2’.
char a[]={"12"};其元素a[0]='1',a[1]='2’,a[2]='\0'。
2009-11-17 11:12
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
万改称才
Rank: 3Rank: 3
来 自:温州
等 级:论坛游侠
帖 子:58
专家分:113
注 册:2009-11-10
收藏
得分:0 
定义字符  最好   char a[]=“”  不要在[]里写东西

老师说 : 好好读书
2009-11-17 12:48
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
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:0 
以下是引用liangwenbc在2009-11-17 12:54:36的发言:

就是这个问题啊,char a[2]={"12"};其元素a[0]='1',a[1]='2’这句定义数组a有2个元素,然后用字符串赋值a[0]和a[1]的值分别是1和2,那'\0'不是没地方放了吗,但是调试的时候为什么没有出错呢
系统在分配内存存放字符串时,会在字符串最后自动生成一个空间放'\0'
2009-11-17 13:26
liangwenbc
Rank: 3Rank: 3
来 自:广州
等 级:论坛游侠
帖 子:168
专家分:174
注 册:2008-6-11
收藏
得分:0 
以下是引用陈大师在2009-11-17 13:26:37的发言:

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

qq7434391
2009-11-17 13:49
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:5 
回复 9楼 liangwenbc
a[2]={"12"};
puts(a);  这会输出:12加后一堆乱码,假如a[1]的下个地址值是0,输出看似正常。
"12"含 '1' '2' '\0' 用只有两元素的数组a是错误的,但TC编译不会报错,TC里甚至下标越界也不报错,如只有两元素的数组a,printf("%c",a[5]);这样使用都不报错,但明显是错误的引用。一句话,TC编译不严格。

努力—前进—变老—退休—入土
2009-11-17 14:09
快速回复:莱鸟问题啊+++
数据加载中...
 
   



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

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