sizeof
1.sizeof 是运算符,返回一个对象或者类型所占的内存字节数,其值在编译时即计算好了。
2.sizeof 有三种语法形式,如下:
- •sizeof( object ); // sizeof( 对象 )
- • sizeof( type_name ); // sizeof( 类型 );
- •sizeof object; // sizeof 对象;
3.sizeof 不能用来运算函数类型,不完整类型,位域类型。
4.如果运算对象是引用类型,那么实际运算的是所引用的类型。
5.用sizeof对类名操作,得到的结果是该类的对象在存储器中所占据的字节大小,由于静态成员变量不在对象中存储,因此这个结果等于各非静态数据成员(不包括成员函数)的总和加上编译器额外增加的字节。后者依赖于不同的编译器实现,C++标准对此不做任何保证。
6.C++标准规定类的大小不为0,sizeof 空类的大小为1,当类不包含虚函数和非静态数据成员时,其对象大小也为1。 如果在类中声明了虚函数(不管是1个还是多个),那么在实例化对象时,编译器会自动在对象里安插一个指针指向虚函数表VTable,在32位机器上,一个对象会增加4个字节来存储此指针,它是实现面向对象中多态的关键。而虚函数本身和其他成员函数一样,是不占用对象的空间的。
7.如果运算对象是一个表达式,sizeof不会去求表达式的值,而是计算所返回的静态类型的大小。另外左右值转换,数组名指针转换,函数名指针转换都不会发生。
strlen
1.strlen() 是函数,返回以 ‘