C++11、C99下的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

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

时间: 2024-10-30 09:41:57

C++11、C99下的sizeof的相关文章

OS10.11系统下 安装cocoapods 以及 安装cocoapods-xcode-plugin-master插件来加载三方框架

OS10.11系统下 安装cocoapods 以及 安装cocoapods-xcode-plugin-master插件来加载三方框架A.安装cocoapods:1.sudo gem update --system 更新gem(1.1 sudo gem uninstall cocoapods 该情况看是否需要卸载cocoapods 一般不必使用该命令) 2.gem source -l http://rubygems.org/ 查看安装ruby环境的路径 3.gem source -a http:/

OS X 10.11系统下cocoaPods安装注意事项

本文读者需具备的知识:cocoaPods相关概念及常用命令. 今天初次使用cocoaPods(下面我就称其为可可豆好了),为其在OS X 10.11系统下的安装折腾了半天,衰x10^n... 先反省一下关键点:[1]版本兼容性:[2]解决问题的思路!!! 系统更新(因为代码中使用了XCode 7的新特性,而XCode需要10.11系统)后,一上来: sudo gem install cocoapods  //不要sudo应该也可以 然后,提示需要ruby2.2.2以上的ruby版本……(而在10

MVC - 11(下).jquery.tmpl.js 接收JSON类型数据循环

继续 mvc-11(上).dto:http://www.cnblogs.com/tangge/p/3840060.html jquery.tmpl.js 下载:http://pan.baidu.com/s/1o68w7Ke   1.前台 Index.cshtml @{ ViewBag.Title = "学员列表"; } @section headSection{ <script type="text/x-jquery-tmpl" id="trtemp

SuSE 11 sp3 下安装异系统共享Samba服务

USE 11 sp3 下安装异系统共享Samba 本人安装过ftp,但异系统之间还是感觉samba使用更为方便,下面是简单的配置 在内网服务器110上安装samba服务器 端口445 1,安装samba 系统自带 或者zypper install samba 2,创建登录用户,访问用户密码 共享文件夹 (为了方便管理我喜欢特定用户)useradd -m samba1passwd samba1 PW:samba123 用户登录密码smbpasswd -a samba1 访问密码:samba1234

SuSE 11 sp3 下安装配置nfs共享挂载

SUSE 11 sp3 下安装配置nfs共享 服务器:Server端:10.133.212.145 /nfs/145Client端: 10.133.212.146 /nfs/146目的:将/nfs/145挂载到 /nfs/146使用1.Server端 1.1 检查是否已经安装NFS服务,SUSE安装nfs服务端主要是这个nfs-kernel-server 检查是否安装nfs-kernel-server:Server:~ # rpm -aq|grep nfsyast2-nfs-common-2.1

在xcode6.1和ios10.11环境下实现app发布

方法/步骤 1 第一步:创建app发布证书以及配置文件 1.  进入ios开发中心 2 2. 点击进入 Certificates,Identifiers & Profiles 3 3. 说明:因为这次我需要的是发布app,所以证书需要选择的是Production版本,而开发测试的话是Development版本. 4 4. 在Identifers中创建App IDs 说明: 这里就不做如何创建APP IDS的教程了,因为上次真机测试中已有,而已创建一个APP IDS中就包括了开发版(Develop

综合运用: C++11 多线程下生产者消费者模型详解(转)

生产者消费者问题是多线程并发中一个非常经典的问题,相信学过操作系统课程的同学都清楚这个问题的根源.本文将就四种情况分析并介绍生产者和消费者问题,它们分别是:单生产者-单消费者模型,单生产者-多消费者模型,多生产者-单消费者模型,多生产者-多消费者模型,我会给出四种情况下的 C++11 并发解决方案,如果文中出现了错误或者你对代码有异议,欢迎交流 ;-). 单生产者-单消费者模型 顾名思义,单生产者-单消费者模型中只有一个生产者和一个消费者,生产者不停地往产品库中放入产品,消费者则从产品库中取走产

C/C++中sizeof()的用法——32位和64位下的sizeof()

本文转自:http://blog.csdn.net/xunfeng13/article/details/51011509 机器平台:X86_64 处理器 操作系统:Red Hat 4.1.2-14 编译器: gcc version 4.1.2 20070626 Size of char is:                                   1 Size of unsigned char is:                     1 Size of signed cha

Mac OS X 10.11.1下搭建Python3.4 + PyQt5.5.1 +Eric6.1.1开发平台

由于Python易学.开源.面向对象.可移植性高.库丰富的特点,近期开始学习Python.百度了解了各款Python IDE后,还是认为Eric比较适合我,所以踏上了安装Eric坎坷之路,从选定工具到安装成功一共花费了8天时间,从Windows到Linux再到Mac,挨个折腾了一遍,Windows的搭建比较简单,下载好相应版本直接运行exe就行了,Linux和Mac下我都是用源码包安装的,所以遇到了不少问题最后,终于在Mac上研究明白了.把搭建的整个过程写下来,和与我一样的小白分享. PS:Ma