关于sizeof问题
struct{int day; char mouth; int year;}a, *b;
b=&a;
sizeof(a)的值是5,因为INT为2,CHAR为1,INT为2,故而为5,
请问sizeof(b)为多少?答案是2,请问如何得来?请指教!
sizeof(b); 由于b是一个指针变量,我们就来说一下指针变量的sizeof 你应该知道指针是一个很重要的概念,它记录了另一个对象的地址。既然是来存放地址的,那么它的长度等于计算机内部地址总线的宽度。所以在32位计算机中,一个指针变量的返回值是4(以字节为单位,如在VC++中就是4),而你计算出2应该是在16位的dos环境下的编译器吧(比如TC),由此我们可以推测64位系统中指针变量的sizeof结果为8。 关于sizeof确实使很多人迷惑,程序员怕用他但不得不用它,看看下面这篇文章,可能会帮你理解的: http://englep.yculblog.com/post-103445.html
young说的基本正确
另外,在struct{int day; char mouth; int year;}a, *b; 中,
sizeof(a)并不一定等于sizeof(a.day)+sizeof(a.mouth)+sizeof(a.year)
在32位机器中,sizeof(a)有可能是9或者10或者12或者16,跟你选择的编译器的对齐方式有关。
关于vc中的sizeof的情况请看:
http://websx.home.zccn.net/bbs/dispbbs.asp?boardid=56&id=5233