C语言问题。数组字符串长度问题。我写的对不对啊,分为实际长度和函数计算长度。

 我来答
nari_lizw
推荐于2016-03-15 · TA获得超过7390个赞
知道大有可为答主
回答量:2075
采纳率:70%
帮助的人:807万
展开全部
char s[10]="abc"; //实际占用10个字节,strlen计算长度为3,正确
char s[]="abc"; //实际占用4个字节,strlen计算长度为3,正确
char s[10]={'a','b','c'}; //实际占用10个字节,strlen计算长度为3,正确
char s[]={'a','b','c'}; //实际占用3个字节,strlen计算长度为(随机值),不是3,因为这个只明确了s是一个有三个元素的字符数组,第四个元素已经是非法空间了。
char s[3]="abc"; //编译通不过,因为"abc"需要4个字节,而s[3]只有3个字节的空间。
char s[3]={'a','b','c'}; //实际占用3个字节,strlen计算长度为(随机值)
更多追问追答
追问
说的太好了。可是我觉得倒数第二个能通过,只是不能当做字符串数组使用
好吧,确实会编译出错
新人旧酒o
2015-01-19 · TA获得超过290个赞
知道小有建树答主
回答量:203
采纳率:0%
帮助的人:163万
展开全部
有一些错误
s[3]="abc";这样是编不过的 超出界限 有一个\0没地放
另外 我不知道你函数 你是怎么处理的 但如果只是简单的 传入s然后用sizeof的话 那结果肯定是指针长度 32位系统下 值是4 所有都是 不论你 定义多长 赋多少值 如果是用strlen的话 那就和你的结果相同了
追问
VC环境下不报错,用strlen函数
追答
这都不报错   我不知道你的是什么情况 但最好不要这样搞 毕竟大家都知道  "abc"这是个 const 
char[4] 我在VS下试了 是会报错的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自潭柘寺不可思议的米老鼠
2015-01-19
知道答主
回答量:9
采纳率:0%
帮助的人:3.1万
展开全部
看不清
追问
放大了看

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式