1、
void fun(char ch[])
{
cout<<sizeof(ch)<<endl; //或者sizeof(ch)=?;
}
这种情况,数组名作为形参,退化成指针,所以sizeof结果是4(32位编译器);
2、
int *p=(int *)malloc(); cout<<sizeof(p)<<endl;
答案为4(32位编译器)。
sizeof(p)只能测定指针大小,sizeof不能测定动态分配的数组大小。
3、
int x[]={};
cout<<sizeof(x)<<endl;
int y[]={,,,};
cout<<sizeof(y)<<endl;
输出:40 16
4、结构体
C语言 - 结构体所占字节数 内容有点多,可以多看几遍
5、共用体:共用体的各个成员占用共同的存储单元,具有相同的首地址,占用存储单元最多的成员的长度就是共用体的长度。
struct stru{char c;int a;};
union uni{char c;int a;}; struct stru st={};
union uni un={};
cout<<sizeof(st)<<endl;
cout<<sizeof(un)<<endl;
32位编译器输出:
8
4