c语言问题(有酬谢哈哈)

来源:百度知道 编辑:UC知道 时间:2024/05/22 01:26:35
在一般情况下,若有以下定义和语句:struct { float time;int day;char month;int year;}a,*b;b=&a;,则sizeof(a)的值是 (),而sizeiof(b)的值是( )
然后给me讲讲why ,谢谢各位乡亲父老

这个要看你编译环境了

比如在TC中不要求内存对齐,且地址是16位的

那么
sizeof(a) =9
sizeof(b)=2
(以验证)
如果是vc6那么它要求内存对齐,且地址是32位的
sizeof(a) =16
sizeof(b)=4
(电脑上没装vc,这个我还没验证)

总之sizeof(a)计算的是结构体a占用个字节数

sizeof(b)计算的是指针占用的字节数
对同一个系统而言,不管是指向int,float,char还是其他类型的指针,其占用的字节数都是一样的

系统不一样,答案不一样。

32位编译器

sizeof(float) == 4
sizeof(int) == 4
sizeof(char) == 1

sizeof(a) == 4+4+1+4 == 13
但是由于内存对齐,32位编译器,在结构体中普通情况下不满4字节的会补齐4字节。所以一般sizeof(a)==16

指针类型也是4字节,不管它指向哪里
sizeof(b)==4