请教个C语言sizeof的问题
我只是知道:a:6
b:5
c,d,e就不知道多少了。呵呵。 好像慧通的笔试考过,俺不懂。。。 char c="abcde";内存状态为abcde\0\0\0\0\0,sizeof为10
d也为10
至于e为未定义,应该也是10 6,5,10,10,10...没软件验证...--_-
sizeof(数组名)....返回的是整个数组的字节长度....
sizeof是依赖于编译器的,char 在各种编辑器中几乎都是 1字节...
int,double... 那些,不同编辑器返回值会有不同.... 数组的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 参考一下以前这张贴,关于sizeof的讨论的。
https://www.gdutbbs.com/viewthread.php?tid=28695 补充一个:
char s="abcde";
这样是返回几呢? 这样会出错的,数组越界,因为声明数组s大小是5,而赋值有6个元素(还有一个结束符) ok...
thx
我继续努力我的基础了。 Originally posted by hjack at 2005-11-20 03:42 PM:
这样会出错的,数组越界,因为声明数组s大小是5,而赋值有6个元素(还有一个结束符)
没错~超出左边界~出现错误~~ 记住~字符串仲有一个结束标记(\0) Originally posted by wool王 at 2005-11-20 14:13:
补充一个:
char s="abcde";
这样是返回几呢?
只超出一个字节有时程序不会出错.有些严格的编译器可能给出警告的提示.但如果超出部分太长有可能覆盖函数的返回地址(当数组在函数里面定义),那样就会有溢出错误. 6,5,10,10,10 Originally posted by wool王 at 2005-11-20 02:13 PM:
补充一个:
char s="abcde";
这样是返回几呢?
返回是5
但赋值出错了 通过这么多讨论,以为对sizeof很了解,到这里再看看,才知道......看看又有新收获
http://www.bwitlab.com/dispbbs.asp?boardID=11&ID=7180&page=1
页:
[1]