sizeof的概念

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。

上一篇:[C++] vptr, where are you?


下一篇:实验四