sizeof运算符
- 简单定义
sizeof是获取表达式结果的类型或一个类型占用内存空间大小的运算符。 - 标准上带来的Tips
- C99以前,sizeof的值是编译过程就决定了的,C99以后,引入了可变长数组,sizeof的值便也可以在运行时决定。
例子:
int main(){ int n; scanf(%d,&n); int a[n];//可变长数组,内存空间还是在栈上 printf("%d\n", sizeof(a)); return 0; }
运行结果:
注:本gcc版本为4.9.2, 已支持C99标准
分析:
以上结果说明,sizeof运算符也可以在运行时取值。- C++11标准中,允许使用作用域运算符对类成员进行sizeof取值,而不局限于使用类对象获取类成员。因为sizeof仅是对表达式结果的类型取所占用空间大小,而不会实际使用该对象
例子:
struct A{ double a; int b; }; int main(){ printf("%d\n", sizeof(A::a)); printf("%d\n", sizeof(A::b)); return 0; }
执行结果:
注:本g++编译器支持C++11 - C99以前,sizeof的值是编译过程就决定了的,C99以后,引入了可变长数组,sizeof的值便也可以在运行时决定。
原文地址:https://www.cnblogs.com/LeeQMoon/p/12398908.html
时间: 2024-10-30 09:41:57