文档介绍:袄SIZEOFCONST预处理题目:{chara;intb};sizeof(s)=8;因为当结构体内元素长度都小于处理器位数(32位=4字节)的时候,便以结构体中最长的数据元素为对齐条件,a按1字节对齐,b按4字节对齐,所以s默认对其参数为8羆structA{shorta1;shorta2;shorta3};sizeof(A)=6;原因同上,结构体按最长元素short(2字节对齐)。[200];sizeof(a)=200*sizeof(int)=800;对整个数组大小评测肈int*a=newint[200];sizeof(a)=4;对指针大小进行评测蝿charstr[]="012345";sizeof(str)=7;str是一个字符数组,数组最初大小未定,由具体值"012345"来决定,6*sizeof(char)=6,还有隐含的"\0",所以一共7位。蚅charstr[]="s\n";sizeof(str)=3;回车"\n"是一个字符,可以查看ASCII表。还有\r、\,其中元素最大为1字节大小=8bits,元素按照1字节进行对齐,sizeof(b)=1+1(4bits+2bits<8bits)+1(3bits)={蒄chara:8;袂charb:4;袀charc:2;罿chard:3;芃};羂芁写出运行结果:莇unionV{芆structX{肂unsignedchars1:2;莈unsignedchars2:3;聿unsignedchars3:3;肅}x;膂unsignedcharc;蝿}v;=100;袄printf("%d",);:{};sizeof(A)=1;默认空类是有一个占位符的袇对于虚函数classA{virtualtest()};classB:publicA{};sizeof(A)=4;sizeof(B)=4任何含有虚函数的类拥有一个vptr指针,用来指向虚函数表vtable。sizeof(vptr)=4莂classA{staticinta;};sizeof(A)=1;对于静态成员变量是分配在全局存储区的,所以A还是相当于空类。薀classC:publicvirtualA{};sizeof(C)=4;对于虚拟继承的类拥有虚函数表,:蚅typedefunion{longi;intk[5];charc;}DATE;//sizeof(int)*5=20莂structdata{intcat;DATEcow;doubledog;}too;//4+20+8=32羁DATEmax;蒈则语句printf("%d",sizeof(structdate)+sizeof(max));的执行结果是:52莄对于union联合来说,取其中最大元素长度来做为联合大小。,void*pp=malloc(10);sizeof(p)=4;跟指针一样,sizeof只能测出静态数组的长度,:对于charstr[100]或者charstr[]参数都退化为char*str,这样的函数即使传入chars[10]也是可以的袆voidFunc(charstr[100])膃{薁printf("%d\n",sizeof(str));蕿}薈chars[10];//函数对数组长度并没有检验膆Func(s);蚁结果:sizeof(char*)=4羀如何强制str为100位数组?可以如此声明char(&str)[100]肆理解顺序:(char(&str)[100])螁{莁printf("%d\n",sizeof(str));螈}螄chars[100];袁Func(s);//这里必须给定100位长度char数组螂结果:100*sizeof(char)=:#define有什么不同羁答案:,而宏没有数据类型。编译器可以对const常量进行类型检查,而对宏只进行字符替换没有类型检查。,、函数返回值,C++还可以用来修饰函数,,这个宏输入两个参数并返回较小的一个羁答案