标题:c和c++定义数组会比原来的大?
只看楼主
chaos
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2004-6-10
 问题点数:0 回复次数:4 
c和c++定义数组会比原来的大?
在定义一个数组,如ary[2] 数组的大小不是2,也不是3,而是更大一些

C++中用new的时候,也是一样

我猜想是不是内部处理的时候会给出比较大的空间,减少程序员定义时的错误呢 达人们怎么认为呢?

搜索更多相关主题的帖子: 定义 空间 程序员 ary 
2004-07-01 00:09
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 

不懂你什么意思?什么数据占多大空间你搞错了吧

main() { int ss[5]; int a; char bb[5]; char g; printf("%d %d %d %d",sizeof(ss),sizeof(a),sizeof(bb),sizeof(g));

}

10 2 5 1


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-07-01 00:52
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
得分:0 

你说的大应该是溢出的问题,你可以显示ary[3]等等,但那个是不对的!

如果只是读问题还不是太大,但写就回出现大问题了!

[此贴子已经被作者于2004-07-01 17:34:53编辑过]


差点把你忘了...
2004-07-01 17:33
chaos
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2004-6-10
得分:0 

长度和占多大空间的概念是怎么样的呢

这个ary[5]不是只能放4个字符和一个\0吗

main() {

char ary[5];

int i;

i = strlen(ary);

printf("%d", i);//这里输出结果的长度为什么会是11?

printf("%d", sizeof(ary));

}

[此贴子已经被作者于2004-07-01 19:25:32编辑过]


2004-07-01 19:20
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 

因为你没有加'\0',这11是个随机数。

strlen(ary);只有遇到了'\0'才会返回


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-07-01 19:53



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




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

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