sizeof 是一个关键字、操作符,也是一个编译时运算符,其作用是返回一个对象或者类型所占的内存字节数。
sizeof 运算符可用于获取类、结构、共用体和其他用户自定义数据类型的大小。
sizeof() 的使用方法详解C++ sizeof
c++中sizeof()的用法介绍
(1)sizeof(object); //sizeof(对象); (2)sizeof(type_name); //sizeof(类型); (3)sizeof object; //sizeof对象;【不常用】1. sizeof 计算基本数据类型和表达式
sizeof计算对象的大小实际上是转换成对象类型进行计算,也就是说,同种类型的不同对象其sizeof值都是一致的。
这里,对象可以进一步延伸至表达式,即sizeof可以对一个表达式求值,编译器根据表达式的最终结果类型来确定大小,sizeof是编译时进行运算,与运行时无关,不会对表达式进行计算。
#include#include using namespace std; int main() { cout<<"sizeof(bool)="< 由于基本数据类型的内存大小是和系统相关的,所以在不同的系统下取值可能不同。
2. sizeof 计算指针变量指针记录了一个对象的地址。指针变量的位宽等于机器字长,机器字长由CPU寄存器位数决定。在32位系统中,一个指针变量的返回值为4字节,64位系统中指针变量的sizeof结果为8字节。
#include#include using namespace std; char testfunc(){ return 'k'; } int main() { char* pc = "abc"; int* pi=new int[10]; string* ps; char** ppc = &pc; void (*pf)(); // 函数指针 sizeof( pc ); // 结果为4 sizeof( pi ); // 结果为4 sizeof( ps ); // 结果为4 sizeof( ppc ); // 结果为4 sizeof( pf ); // 结果为4 sizeof( &testfunc); // 结果为4 sizeof( testfunc()); // 结果为1 sizeof((*testfunc)()); // 结果为1 return 0; } (1)指针变量的sizeof值与指针所指的对象类型没有任何关系,与指针申请多少空间没有关系,所有的指针变量所占内存大小均相等。那为什么在本机64bits系统下,指针变量大小仍然是4个字节,因为使用32位编译器编译得到程序是32位,故指针大小是4字节,可自行修改编译器版本,不再赘述。
(2)&testfunc代表一个函数指针,指针大小是4,所以sizeof(&testfunc)==4。testfunc()代表一次函数调用,返回值类型是char,所以sizeof(testfunc())==sizeof(char)==1。testfunc名本身就是一个函数指针,所以(*testfunc)()也是一次函数调用,sizeof((*testfunc)())==sizeof(char)==1。
4. sizeof 计算数组当sizeof作用于数组时,求取的是数组所有元素所占用的大小。
#includeusing namespace std; void foo(int a[3]){ // a以指针传递 cout << sizeof(a) << endl; } int main() { int A[3][5]; // 二维数组 char c[] = "123456"; // 字符串 char *ch[10]; // 指针数组 double*(*d)[3][6]; cout<


