结构体,联合体,枚举,typedef

时间:2021-11-10 19:55:51

自定义类型

字节对齐

 

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\n",p+1);    //2012
printf("%d\n",(unsigned long)p+1);//2001
printf("%d\n", (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是变量的名称的集合

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

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

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

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