sizeof 运算符返回一条表达式或一个类型所占的字节数(sizeof 运算符满足右结合律)。所得的值是一个 size_t 类型。
它有两种形式:
int i = 7;
sizeof (int); //括号里面装的是数据类型以及自定义的数据类型
sizeof i; //这个后面跟着对象。
sizeof int; //错误,不用这种形式,计算int所占的字节数
sizeof (i) ; 正确的,第一种形式也可以计算对象所占的字节数
第二种形式,返回表达式结果类型的大小。
以下形式有些是例外:
int i = 7;
int a = 7;
int b = 7;
cout<<sizeof ( a +b)<<endl; //输出 4 返回的是所占用的字节数
cout<<sizeof (a + b)+i; //输出 11 返回的是所占字节数加上i的值
cout<<sizeof a + (b + i); //输出 18 这个是把b和i的值相加,现加上所占字节数
cout<<sizeof (a + b + i); //输出 4 括号里面的结果相加,结果的类型所占用的字节数
cout<<sizeof a + b + i; //输出18 算出a所占字节数,再依次加上b和i的值
sizeof和指针:
int a = 7;
int* p = &a;
sizeof p; //返回指针所占空间的大小
sizeof *p; //返回p所指类型的空间大小,也就是int类型所占的字节数, sizeof(int)
注意:
1.对char或类型为char 的表达式执行sizeof运算,结果为1;
2. 对引用类型执行sizeof 运算得到被引用对象所占空间的大小。
3.对指针执行sizeof运算得到指针本身所占空间的大小。
4.对解引用指针执行sizeof 运算得到指针指向的对象所占空间的大小 ,指针不需要有效。
5.对数组进行sizeof 运算,得到整个数组所占空间的大小 ,sizeof运算不会把数组转换成指针处理。
6.对 string 对象或 vector 对象执行sizeof运算只返回该类型固定部分的大小,不会计算对象中的元素占用了多少空间。
本文详细介绍了C++中的sizeof运算符,包括其用法、返回值类型以及在不同情况下的表现。sizeof可以用于计算数据类型或变量所占内存大小,对于数组、表达式、指针等有不同的处理方式。例如,sizeof运算符可以返回指针本身的大小,或者解引用指针后的类型大小。同时,需要注意sizeof在处理数组和表达式时的区别,以及与指针和引用的交互。

890

被折叠的 条评论
为什么被折叠?



