码迷,mamicode.com
首页 > 编程语言 > 详细

C++11、C99下的sizeof

时间:2020-03-03 00:53:37      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:占用   code   标准   struct   tips   编译过程   运算   sizeof   表达式   

sizeof运算符

  • 简单定义
    sizeof是获取表达式结果的类型一个类型占用内存空间大小的运算符

  • 标准上带来的Tips
    1. 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运算符也可以在运行时取值。
    1. 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

C++11、C99下的sizeof

标签:占用   code   标准   struct   tips   编译过程   运算   sizeof   表达式   

原文地址:https://www.cnblogs.com/LeeQMoon/p/12398908.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!