wool王 发表于 2005-11-20 00:59

请教个C语言sizeof的问题

我只是知道:
a:6
b:5

c,d,e就不知道多少了。呵呵。

wool王 发表于 2005-11-20 00:59

好像慧通的笔试考过,俺不懂。。。

死不瞑目 发表于 2005-11-20 02:13

char c="abcde";内存状态为abcde\0\0\0\0\0,sizeof为10
d也为10
至于e为未定义,应该也是10

ミ淡淡幽香ミ 发表于 2005-11-20 04:21

6,5,10,10,10...没软件验证...--_-

sizeof(数组名)....返回的是整个数组的字节长度....

sizeof是依赖于编译器的,char 在各种编辑器中几乎都是 1字节...

int,double... 那些,不同编辑器返回值会有不同....

hjack 发表于 2005-11-20 10:41

数组的sizeof值等于数组所占用的内存字节数
声明一个数组就是告诉编译器对数组保留多少内存
如:char c;就是告诉编译器对c保留12个元素。

带初始值列表的声明中省略了数组长度,数组元素个数是初始列表元素的个数。
像上面的b。
c,d,e都是声明了10个元素的char型数组,所以是10*1=10.
a因为是一个字符串,在未尾要加上一个结束符,所以是6。

所以结果是6.5.10.10.10

char 是1,int是4

hjack 发表于 2005-11-20 10:45

参考一下以前这张贴,关于sizeof的讨论的。

https://www.gdutbbs.com/viewthread.php?tid=28695

wool王 发表于 2005-11-20 14:13

补充一个:
char s="abcde";

这样是返回几呢?

hjack 发表于 2005-11-20 15:42

这样会出错的,数组越界,因为声明数组s大小是5,而赋值有6个元素(还有一个结束符)

wool王 发表于 2005-11-20 17:32

ok...

thx

我继续努力我的基础了。

拥吻 发表于 2005-11-20 20:35

Originally posted by hjack at 2005-11-20 03:42 PM:
这样会出错的,数组越界,因为声明数组s大小是5,而赋值有6个元素(还有一个结束符)


没错~超出左边界~出现错误~~

拥吻 发表于 2005-11-20 20:36

记住~字符串仲有一个结束标记(\0)

谷夕2005 发表于 2005-11-21 13:06

Originally posted by wool王 at 2005-11-20 14:13:
补充一个:
char s="abcde";

这样是返回几呢?


只超出一个字节有时程序不会出错.有些严格的编译器可能给出警告的提示.但如果超出部分太长有可能覆盖函数的返回地址(当数组在函数里面定义),那样就会有溢出错误.

盼望 发表于 2005-12-31 11:47

6,5,10,10,10

盼望 发表于 2005-12-31 11:51

Originally posted by wool王 at 2005-11-20 02:13 PM:
补充一个:
char s="abcde";

这样是返回几呢?


返回是5
但赋值出错了

powerwind 发表于 2006-1-1 10:50

通过这么多讨论,以为对sizeof很了解,到这里再看看,才知道......看看又有新收获
http://www.bwitlab.com/dispbbs.asp?boardID=11&ID=7180&page=1
页: [1]
查看完整版本: 请教个C语言sizeof的问题