zoukankan      html  css  js  c++  java
  • 结构体,联合体,枚举,typedef

    自定义类型

    字节对齐

    struct Test
    {
    int Num;
    char *pcName;
    short sData;
    char ch;
    }*p=(Test*)0x2000;

    struct Test p2;

    p2.Num=100;//初始化结构体的指针访问其成员可以使用---->,c++主函数中可以省去struct


    int main()
    {

    printf("%d ",p+1);    //2012
    printf("%d ",(unsigned long)p+1);//2001
    printf("%d ", (unsigned int*)p + 1);//2004
    }

    【1】typedef和#define的区别?

      (1)用法不同:typedef是变量类型的别名,增强程序的可读性。宏是字符替换。

      (2)执行时间不同:typedef是编译过程的一部分,有类型检查的功能,define在预编译部分,在编译之前,无类型检查;

      (3)作用域不同:typedef有作用域限定,define不受作用域限定;

      (4)对指针的操作不同:define定义是字符替换,typedef是类型,typedef结束要加分号;

      

    【2】用代码检测当期系统的大端小端模式?

      int a = 0x11223344;
      char *p = (char*)&a;
      if (*p == 0x44)
      {
      printf("小端");
      }

    【3】struct和class的区别?

           struct默认为public,class默认为private

    【4】struct和union的区别?

      struct 每个成员都分配独立的内存空间,union共用一个内存空间,enum是变量的名称的集合

    1、在没有显示说明的情况下,枚举常量(也就是花括号中的常量名)默认第一个枚举常量的值为0,往后每个枚举常量依次递增1

    2、在部分显示说明的情况下,未指定的枚举名的值将依着之前最有一个指定值向后依次递增

    3、一个整数不能直接赋值给一个枚举变量,必须用该枚举变量所属的枚举类型进行类型强制转换后才能赋值

    4、同一枚举类型中不同的枚举成员可以具有相同的值

    5、同一个程序中不能定义同名的枚举类型,不同的枚举类型中也不能存在同名的枚举成员(枚举常量)

    【5】struct结构体的内存对齐问题?

    前面是后面的倍数,所有数是最大数的倍数

    【6】c++ 的空结构体占多大内存?能不能来定义变量?变量有没有地址?多个空结构体定义的变量内存地址空间是相同的还是连续的?

       一个字节   能    有   线性的     class也是如此  c中不能定义空结构体

  • 相关阅读:
    svn Mac
    webpack实用配置
    vuex状态管理-数据改变不刷新
    element-vue-koa2-mysql实现文件上传
    Promise的理解
    mysql Mac篇
    python 24 days
    python 7 days
    python 27 days
    python 26 days
  • 原文地址:https://www.cnblogs.com/xcb-1024day/p/11170424.html
Copyright © 2011-2022 走看看