【笔记-C语言】 结构体

来源:互联网 发布:最优化数学基础 编辑:程序博客网 时间:2024/06/05 22:34

结构体: struct A{……};

       定义:struct A a;

        初始化:struct A a={*,*,……}

        访问或初始化或修改:a.*;

typedef:给类型取别名

     exp:  typedef  int INT;

  与宏的区别:#define INT int

typedef  struct{}A;

  此时A为类名,struct A等价于A

 

结构体指针: struct A  *p=&a;

       访问成员:(*p).i或者p->i

 

内存分配将结构体成员分配到内存的边界上,方便访问,整个的结构体长度必须保持为内部最长成员的整数倍

char(1)  int(4)  short(2)  double(4,4)

exp1:

double(4,4)

      下面两个char加两个填充共计4

char(1)

char(1)

*

*

总计占12个字节

出现最大倍数为4,double以后以4为块,两个char只占2,所以填充两个位

exp2:

char(1)

*

short(2)

char(1)

*

占六个字节

 

 

结构体位段:可以指定每个成员的大小,节约内存(大小指二进制数)

exp: int i:3;指定占三个二进制位

struct{int a:5;int b:2};

结构体大小4个字节,向结构体写入“1234

内存中是对应ASICII码:00110000,00110001,00110010,00110011

a:5  b:2 则分别取:00110000,00110001,00110010,00110011

a:5  b:4 则分别取:00110000,00110001,00110010,00110011

      b取出为:1001

原创粉丝点击