嗯~ 已经连做3篇题解了,无聊~
所以今天,我们来讲结构体!!!
1.神马是结构体
让我们先来回答一个问题,神马是结构体哩???
简单来说,结构体就是一个自定义的变量,数组类型,但要注意,这个类型只能由已有的类型相加构成。
如:
A类型变量=int类型变量+flaot类型变量+char类型数组
2.结构体的定义+初始化/声明+重命名
- 结构体的定义
struct A
{
int a;
char s;
float *w;
};
struct(关键字) A (类型名)
int a;(成员/元素a)
char s;(成员/元素s)
float *w;(成员/元素*w)
};(写分号)
- 结构体的初始化/声明
struct A m={78,'a',&o};
struct A (类型名,=int,char...)
- 结构体的重命名
typedef struct A a;
typedef struct A (旧名) a (新名);
3.结构体运算符
m.a=0;
(*o).a=0;
o->a=0
//以上均为a=0;
.(成员运算符)
->(指向运算符)
4.结构体内存
结构体内存遵循按成员最大内存分配规则
如:
int a | float b | char c | long d |
---|---|---|---|
4 | 4 | 4 | 4+4 |
*long=int+int=4+4=8,所以即使long字节最大,还是按int分配
*可以用sizeof()求内存大小