sizeof面试常考:
1.定义一个空的类型,里面没有任何成员变量和成员函数。对该类型求sizeof,得到的结果是多少?
1
空类型的实例中不包含任何信息,本来求sizeof应该是0,但是当声明该类型的实例的时候,必须在内存中占有一定的空间,否则无法使用这些实例。至于占用多少内存,由编译器决定。
2.如果在该类型中添加一个构造函数和祈构函数,再对该类型求sizeof,得到的结果又是多少?
还是1
调用构造函数和祈构函数只需要知道函数的地址即可,而这些函数地址至于类型有关,与实例无关,编译器不会因为这两个函数在实例中添加任何额外的信息。
1、定义
sizeof是C语言的一种单目操作符,它并不是函数。sizeof操作符以字节形式给出了其操作数所占存储空间的大小。操作数可以是一个表达式或括在括号内的类型名。操作数所占存储空间的大小由操作数的类型决定。作用就是返回一个对象或者类型所占的内存字节数。
2、语法
(1) sizeof( object ); // sizeof( 对象 );
(2) sizeof( type_name ); // sizeof( 类型 );
(3) sizeof object; // sizeof 对象;
int i;
sizeof( i ); // ok
sizeof i; // ok
sizeof( int ); // ok
实际上,sizeof计算对象的大小也是转换成对对象类型的计算,也就是说,同种类型的不同对象其sizeof值都是一致的。
3、基本数据类型的sizeof
这里的基本数据类型指short、int、long、float、double这样的简单内置数据类型,由于它们都是和系统相关的,所以在不同的系统下取值可能不同,这务必引起我们的注意,尽量不要在这方面给自己程序的移植造成麻烦。
一般的,在32位编译环境中,sizeof(int)的取值为4。