1. 在Win32平台上,指针长度都是4字节,char*、int*、double*如此,vbptr(virtual base table pointer)、vfptr(virtual function table pointer)也是如此,
2. 对于结构体(或类),编译器会自动进行成员变量的对齐,以提高运算效率。自然对齐(natural alignment)也称默认对齐方式是按结构体的成员中size最大的成员对齐的,
3. 当操作数具有数组类型时,其结果是数组的总字节数,
4. 联合类型操作数的sizeof是其最大字节成员的字节数,
5. 如果操作数是函数中的数组形参或函数类型的形参,sizeof给出其指针的大小。
以下代码在VC++6.0中编译通过:
#include "stdio.h"
struct struct1
{
char dda;
double dda1;
int type;
}Stru1;
struct struct2
{
double dda1;
char dda;
int type;
}Stru2;
int *a[]={11,12,13,14,15,16};
int *b=NULL;
void main(void)
{
char *pchar;
int *pint;
printf("sizeof(pchar) is %d\n",sizeof(pchar));
printf("sizeof(pint) is %d\n",sizeof(pint));
printf("sizeof(Stru1) is %d\n",sizeof(Stru1));
printf("sizeof(Stru2) is %d\n",sizeof(Stru2));
printf("sizeof(a) is %d\n",sizeof(a));
printf("sizeof(b) is %d\n",sizeof(b));
}
编译运行后的结果是:
参考资料:
http://zhidao.baidu.com/question/19171773.html
http://www.vckbase.com/document/viewdoc/?id=1054
http://blog.vckbase.com/billdavid/archive/2004/06/23/509.html
http://www.cppblog.com/franksunny/archive/2006/12/27/16894.html
http://xsh.changanyouth.cn/new/bbs/read.php?tid=124
http://blog.sina.com.cn/s/blog_4b02b8d001000644.html