sizeof是C++中的一个关键字,作用是获取变量或类型占用字节数。
获取变量或类型占用字节数,可以转到这篇:基本类型的字节长度
接下来要讲的是如何理解sizeof,sizeof在使用时最关键的是,变量要在编译时刻就能知道其大小。
1 2 3 4 5 6 7 8 9 10 11 |
cout<<"sizeof short"<<sizeof(short)<<endl; cout<<"sizeof unsigned short"<<sizeof(unsigned short)<<endl; cout<<"sizeof signed short"<<sizeof(signed short)<<endl; cout<<"sizeof int"<<sizeof(int)<<endl; cout<<"sizeof long"<<sizeof(long)<<endl; cout<<"sizeof float"<<sizeof(float)<<endl; cout<<"sizeof double"<<sizeof(double)<<endl; cout<<"sizeof long double"<<sizeof(long double)<<endl; cout<<"sizeof bool"<<sizeof(bool)<<endl; cout<<"sizeof char"<<sizeof(char)<<endl; cout<<"sizeof wchar_t"<<sizeof(wchar_t)<<endl; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
short s; unsigned short us; signed short ss; int i; long l; float f; double d; long double ld; bool b; char c; wchar_t wc; cout<<"sizeof short"<<sizeof(s)<<endl; cout<<"sizeof unsigned short"<<sizeof(us)<<endl; cout<<"sizeof signed short"<<sizeof(ss)<<endl; cout<<"sizeof int"<<sizeof(i)<<endl; cout<<"sizeof long"<<sizeof(l)<<endl; cout<<"sizeof float"<<sizeof(f)<<endl; cout<<"sizeof double"<<sizeof(d)<<endl; cout<<"sizeof long double"<<sizeof(ld)<<endl; cout<<"sizeof bool"<<sizeof(b)<<endl; cout<<"sizeof char"<<sizeof(c)<<endl; cout<<"sizeof wchar_t"<<sizeof(wc)<<endl; |
所以类似的指针指向的内存大小是无法用sizeof获取的。
1 2 |
int* i = new int[10]; cout<<"sizeof int[]"<<sizeof(i)<<endl; //输出为int*占字节数4 |
总结:sizeof只能用于在编译时刻能确定占用字节部份,对于指针类型变量也只是获取指针占用的字节数,不会获取指向的内存占用字节数。所以sizeof用在代码静态部份还是不错的选择,如要获取动态内存部份还要重新考虑。