1、什么是sizeof
sizeof在msdn上的定义: The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t.
虽然msdn上讲:这个关键字返回一个size_t类型的值,但是他并不是一个函数,sizeof实质上是一个返回一个对象或类型名的长度的操作符。
2、sizeof的用法
(1)sizeof(object)
(2)sizeof(name)
3、sizeof实例
(1)sizeof(std::string) ;//返回32
(2)sizeof(short);//返回2
(3)sizeof(long);//返回4
(4)sizeof(int);//返回4
(5)sizeof(float);//返回4
(6)sizeof(double);//返回8
(7)sizeof(char);//返回1
(8)sizeof(bool);//返回1
(9)sizeof(指针);返回4
(10)sizeof(函数),如果该函数没有返回值则无法使用sizeof(),因为无法对void使用sizeof();如果该函数有返回值则按sizeof(返回值)计算。
(11)sizeof(a=3);//返回结果为4;这是由于sizeof不能被编译成机器码,所以sizeof作用范围内,也就是()里面的内容也不能被编译,而是被替换成类型。=操作符返回左操作数的类型,所以a=3相当于int
4.影响sizeof结果的因素
sizeof具体结果还要根据编译环境来考虑,例如在VS2008中sizeof(std::string)结果为32,在VS2012中sizeof(std::string)结果为28.