zoukankan      html  css  js  c++  java
  • 阿里笔试题

    1.sizeof(A) =22

       对于类A而言,

       int i ;//占用4个字节

       U ;//占用13个字节

       void foo();//函数声明,不占用内存

      typedef char*(*f)(void*);//函数声明,不占用内存

      enum  ;//枚举类型,占用4个字节

    (虽然枚举类型需要偏移量为4的倍数,由于人为定义了内存对齐大小为2字节,所以偏移量需要为2的倍数

     所以U之后需要增加1个字节,4+13+1+4=22个字节)

    如果不定义#pragma pack(2),则sizeof(A)=4+13+3+4=24个字节

    #pragma pack(2)
    class A
    {
        int i;
        union U
        {
            char buff[13];
            int i;
        }u;
        void foo() {    }
        typedef char* (*f)(void*);
        enum{red, green, blue} color;
    }a;

    关于枚举类型为什么是4个字节的问题:

    这只是定义变量类型而已,和定义一个结构体类型一样,并不会实际分配内存。
    printf("%d ",sizeof(DIRECT));则是输出变量类型为DIRECT的存储空间。

    枚举类型在c语言中自动按照Int类型大小进行存储,所以可以看到sizeof(DIRECT) =4.

    typedef enum{ 
            UP, 
            DOWN, 
            RIGHT, 
            LEFT 
    }DIRECT; 

    http://blog.csdn.net/hackbuteer1/article/details/6902917

    http://blog.csdn.net/hackbuteer1/article/details/7450250

    http://blog.sina.com.cn/s/blog_5e3455e70100uib9.html

  • 相关阅读:
    Linux内核的异常修复原理
    sudo: insmod: command not found
    在Qemu+ARM上运行Minix3内核
    2021.34 面对干扰
    2021.33 实践
    selenium+python自动化106
    python测试开发django-111.模型管理器(models.Manager)
    python笔记64
    python笔记63
    python笔记62
  • 原文地址:https://www.cnblogs.com/limera/p/5389021.html
Copyright © 2011-2022 走看看