结构体:
<-.成员 二是字节对齐>
#pragma pack(4)
struct A{
XXXXXX;
}__attribute((packed)) a;
--------------------------------------------
结构体:数据类型的集合
结构体的定义:
1.struct A{
int num;
char name[20];
int score;
};//定义新的数据类型
struct A 变量名[,变量名,变量名[M]];//非常常见
struct A xiaoming,xiaohong,cd13081[38];
2.struct A {
int num;
char name[20];
int score;
}变量名[,变量名,变量名[M]];//用的少
3.stuct {//省略数据类型名字
int num;
char name[20];
int score;
}变量名[,变量名,变量名[M]];//几乎不用
2.结构体的初始化:
1.struct stu{
int num;
char name[20];
int score;
};//定义新的数据类型
int a=4;
1) struct stu a={1,"xiaoming",90};//int a=3;-------非常常用
2) struct stu a = {
.num =1,
.name = "xiaoming",
.score = 99,//最后一个逗号可以省略,<但是在开发中往往是写上>
};//----------最常用
3) struct stu a[2] ={
{1,"xiaoming",90},
{2,"xiaohong",98},
}; //常用
--------------
struct stu a[2] ={
[0].num =1,
[0].name ="xiaoming",
[0].score =91,
[1].num =2,
[1].name ="xiaohong",
[1].score =99,
}; //不常用
----------------------------------
结构体的访问:
直接访问 变量名.成员
------------
间接访问 指针名->成员
--------------------------
结构体与指针:
结构体指针:地址(结构体的地址),访问(操作结构体成员)
结构体成员与指针{
普通指针
函数指针
结构体指针
}
结构体指针做函数参数:
fun(struct stu *p)
---------------------------------------
通过结构体名访问成员,得到的是成员的本身属性
-----------------------------------------
字节对齐:(非标准解释)
1.编译器对齐
2.地址对齐
笔记:在不超过电脑默认对齐时(4)
1. 对齐分两种:
内对:成员对齐值 = 如果成员本身对齐值 与 默认对齐值比-----按最小的对齐值对齐
外对齐:结构体对齐--------成员最大对齐值
2.地址对齐:结构存放地址--------(了解)
阅读(1140) | 评论(0) | 转发(2) |