| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4850 人关注过本帖
标题:一个字符数组的初始化问题
只看楼主 加入收藏
逐渐学习
Rank: 6Rank: 6
等 级:侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
结帖率:100%
收藏
已结贴  问题点数:15 回复次数:9 
一个字符数组的初始化问题
#include <stdio.h>
#include <string.h>
void main()
{
    char s[4]={'a','b','c','d'};
    //char s[4]="abcd";
   printf("%d\n",strlen(s));
}
在给数组s初始化时,出现以下问题
1、s[4]={'a','b','c','d'}编译可以通过,但是s[4]="abcd";出现错误array bounds overflow。
2、在输出长度时,s[4]={'a','b','c','d'}是7而不是4。在vc6环境下跟踪调试,发现

   s="abcd?".  
请高手赐教!

[ 本帖最后由 逐渐学习 于 2010-10-9 13:00 编辑 ]
搜索更多相关主题的帖子: 字符 
2010-10-09 12:58
cacker
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-10-09 13:12
wade2006
Rank: 2
等 级:论坛游民
帖 子:49
专家分:27
注 册:2007-1-16
收藏
得分:2 
strlen只能对字符串进行统计,也就是字符数组最后一个元素的值要为 '\0'
2010-10-09 13:36
逐渐学习
Rank: 6Rank: 6
等 级:侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
收藏
得分:0 
回复 3楼 wade2006
恩,strlen是这么计算的,但是我想知道为什么定义s[4]={'a','b','c','d'},4个元素都指定了字符,
貌似还有s[4]、s[5]、s[6]还存在,这都超过了数组定义了,请指点下。

帮人《---》帮己
2010-10-09 15:53
cacker
该用户已被删除
收藏
得分:5 
回复 4楼 逐渐学习
提示: 作者被禁止或删除 内容自动屏蔽
2010-10-09 17:05
delong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:57
专家分:126
注 册:2010-6-9
收藏
得分:0 
5楼解得好~
2010-10-09 17:17
gmac
Rank: 2
等 级:论坛游民
帖 子:174
专家分:85
注 册:2010-9-28
收藏
得分:3 
strlen()是用来统计字符串的长度,char s[4]={'a','b','c','d'};用单个字符赋值,后面不自动加0,char s[4]="abcd";用字符串赋值时,后面自动加0,溢出,可改为char s[5]="abcd",若想用strlen()函数,采用后一种赋值方法!
2010-10-09 19:57
zghnxzdcx
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:550
专家分:1176
注 册:2010-4-6
收藏
得分:5 
C语言的数组,允许越界使用,数组名,只是一个指针,指向数组内存地址首部,访问元素时,是通过一个简单的公式,找寻元素地址。也就是说,在数组声明完成以后,数组本身并不关心它自己有多少个元素,只要内存不冲突,它可以有很多元素。

你永远不可能战胜一个纯傻子,因为他会把你的智商拉到和他同一个水平,然后用他的丰富经验打败你。
2010-10-09 20:18
逐渐学习
Rank: 6Rank: 6
等 级:侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
收藏
得分:0 
谢谢。

帮人《---》帮己
2010-10-10 11:04
xx342508809
Rank: 2
等 级:论坛游民
帖 子:89
专家分:51
注 册:2010-7-28
收藏
得分:0 
后一个字符组的下标应该是5~~~~~~~~~否则就出现无可估计的错误啊~~~~~~~~~~
2010-10-10 11:27
快速回复:一个字符数组的初始化问题
数据加载中...
 
   



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

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