zoukankan      html  css  js  c++  java
  • c++基础知识操作符sizeof

       sizeof操作符的作用是返回一个对象或类型名的长度(单位为字节),sizeof表达式的结果是编译时常量。

    (1)char类型或者值为char的表达式sizeof为1;

    (2)引用类型的sizeof返回存放此引用类型对象所需的内存大小;

    (3)指针的sizeof为4,若需获取指针指向对象的大小需对指针做解引用;

    (4)对数组做sizeof返回整体数组的大小,所以可以有sizeof求数组个数:

            int sz = sizeof(ia)/sizeof(*ia);

    (5)对函数使用sizeof,在编译阶段会被函数返回值的类型取代(不执行函数)。同样在sizeof后的表达式也不会执行,如下程序输出为4,0:

         int a =0;
         cout<<sizeof(a=3)<<endl;

             cout<<a<<endl;

    扩展:定义一个空类型,里边没有任何成员变量和函数。该类型的sizeof为1.如果在类型中定义构造函数和析构函数,则sizeof结果仍然为1.

            如果将析构函数定义为虚函数,则sizeof为4,因为类型中有虚函数时,会为该类型生成虚函数表,并在类型的实例中添加指向虚函数表的指针,所以大小为4。

    测试代码如下:

    #include<iostream>
    using namespace std;
    class testb
    {
    
    };
    class teste
    {
    public:
        teste(){};
        ~teste(){};
    };
    
    class testf
    {
    public:
        testf(){};
        virtual ~testf(){};
    };
    
    char testFunc(int);
    int main()
    {
        int a = 6;
        char c= 'r';
        char *d = "123";
        int f[4];
        cout<<"sizeof(a):"<<sizeof(a)<<endl;
        cout<<"sizeof(c:"<<sizeof(c)<<endl;
        cout<<"sizeof(d):"<<sizeof(d)<<endl;
         cout<<"sizeof(testFunc(3)):"<<sizeof(testFunc(3))<<endl;
              cout<<"sizeof(f):"<<sizeof(f)<<endl;
      cout<<"sizeof(testb):"<<sizeof(testb)<<endl;
      cout<<"sizeof(teste):"<<sizeof(teste)<<endl;
      cout<<"sizeof(testf):"<<sizeof(testf)<<endl;
      system("Pause");
    
    }

  • 相关阅读:
    Java基础系列1:Java基本类型与封装类型
    深入理解设计模式六大原则
    分布式系统ID生成方案汇总
    微服务入门
    Web攻击技术
    Jedis与Redisson选型对比
    Hystrix分布式系统限流、降级、熔断框架(二)
    可重入锁ReentrantLock实现原理
    Hystrix分布式系统限流、降级、熔断框架(一)
    Redis过期策略、持久化、集群与常见缓存问题
  • 原文地址:https://www.cnblogs.com/OSLover/p/3000963.html
Copyright © 2011-2022 走看看