标题:有谁知道这是为什么?
只看楼主
ryxhh
Rank: 1
等 级:新手上路
威 望:1
帖 子:63
专家分:0
注 册:2005-12-18
 问题点数:0 回复次数:12 
有谁知道这是为什么?
#include<stdio.h>
#include<string.h>
void main()
{
char str_1[40],str_2[40];
printf("%s\n length is: %d\n",str_1,strlen(str_1));
printf("%s\n length is: %d\n",str_2,strlen(str_2));

}
我机器上的运行结果为:
烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫?
length is: 43
烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫?
length is: 83

有谁知道这是为什么?
大家试一试,结果为多少,能贴出来吗?
对这个结果,我也不知道是怎么回事,有些不知所措:第一个长度为40的数组长度为43.第二个却为83??
不解,不解?但愿能知道答案.


搜索更多相关主题的帖子: include 
2005-12-18 21:08
spp509
Rank: 1
等 级:新手上路
威 望:1
帖 子:98
专家分:0
注 册:2005-11-23
得分:0 

你要做什么?


一听就懂,一看就会,一做就错……
2005-12-18 22:05
ryxhh
Rank: 1
等 级:新手上路
威 望:1
帖 子:63
专家分:0
注 册:2005-12-18
得分:0 

不做什么?只是想知道系统在分配给数组时,它的长度和内容是什么


2005-12-18 22:07
ghy2001
Rank: 1
等 级:新手上路
威 望:1
帖 子:87
专家分:0
注 册:2005-10-30
得分:0 
第一个43不知道,第二个83=43+40。

2005-12-19 11:21
原汁原味
Rank: 1
来 自:湖南省永州市
等 级:新手上路
帖 子:62
专家分:0
注 册:2005-11-17
得分:0 
数组不能为空吧

我们不能控制 时间的前进, 但我们可以掌握时间的运用!
2005-12-19 11:27
我爱我家
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-12-19
得分:0 

由于你没有做任何的初始化, 你在用 %s 输出时, 它是遇到 null 时才停止输出的,
所以输出什么都有可能, 输出多长也有可能, 直到它遇到 null

2005-12-19 23:19
ryxhh
Rank: 1
等 级:新手上路
威 望:1
帖 子:63
专家分:0
注 册:2005-12-18
得分:0 
有点明白,不过,我在几台电脑运行都是同样的结果,又做何解释呢
不过还是要谢谢楼上

2005-12-20 11:55
我爱我家
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-12-19
得分:0 
在 VC 里运行了一下程序, 实际上是系统先给 str1 分配了 40个字节的内存空间。

str1--> 起始地址 0012FF58 CC CC CC CC CC CC CC CC 烫烫烫烫
0012FF60 CC CC CC CC CC CC CC CC 烫烫烫烫
0012FF68 CC CC CC CC CC CC CC CC 烫烫烫烫
0012FF70 CC CC CC CC CC CC CC CC 烫烫烫烫
0012FF78 CC CC CC CC CC CC CC CC 烫烫烫烫
0012FF80 C0 FF 12 00<-- 在这里结束了

然后系统有在 str1 的首地址的基础上, 又分配了 40个字节的内存空间。

str2--> 起始地址 ,而下面的 0012FF58 正是 str1 的起始地址。
0012FF30 CC CC CC CC CC CC CC CC 烫烫烫烫
0012FF38 CC CC CC CC CC CC CC CC 烫烫烫烫
0012FF40 CC CC CC CC CC CC CC CC 烫烫烫烫
0012FF48 CC CC CC CC CC CC CC CC 烫烫烫烫
0012FF50 CC CC CC CC CC CC CC CC 烫烫烫烫
0012FF58 CC CC CC CC CC CC CC CC 烫烫烫烫
0012FF60 CC CC CC CC CC CC CC CC 烫烫烫烫
0012FF68 CC CC CC CC CC CC CC CC 烫烫烫烫
0012FF70 CC CC CC CC CC CC CC CC 烫烫烫烫
0012FF78 CC CC CC CC CC CC CC CC 烫烫烫烫
0012FF80 C0 FF 12 00<-- 在这里结束了

所以 str1 的长度是 43 , str2 的长度是 40+43 =83。
2005-12-20 22:39
ryxhh
Rank: 1
等 级:新手上路
威 望:1
帖 子:63
专家分:0
注 册:2005-12-18
得分:0 

请问楼上,是用debug读出来的吗


2005-12-20 22:59
ghy2001
Rank: 1
等 级:新手上路
威 望:1
帖 子:87
专家分:0
注 册:2005-10-30
得分:0 
C0 FF 12 ???
这是什么?占3字节?

2005-12-21 10:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-38767-1-1.html




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

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