结构体
结构体可以申明在函数内部,也可申明在函数外部;
申明在函数内部的结构体只在函数内部有效,所以一般都申明在函数外部;
申明格式 :
struct point{
int x;
int y;
};
struct point p1, p2;
struct {
int x;
int y;
}; p1, p2; // P1 , P2 都是无名结构体;
struct poit {
int x;
int y;
}; p1, p2;
结构体初始化:
struct poit p1 = {1, 21};
struct poit p1 = {2, 21};
结构体通过 “.” 来访问其成员;
结构体指针:
结构变量名字并不是结构变量的地址,必须要使用&运算符;
struct date *pDate = &today;
指向结构的指针:
struct date {
int month;
int day;
int year;
} myday;
**struct date *p = &myday;
(*p).month = 12; // 直接访问;
p->month = 12; // 间接访问;**
结构体作为函数参数:
int number_of_day(strcut date d);
整个结构体可以作为函数的值传入函数;
这事是在函数内部新建一个结构变量,并复制调用者的结构值,并不对原结构体做任何改变;
也可返回一个结构;(返回结构将改变原结构得值)
结构数组:
struct data dates[100];
struct date dates[] = {
{4, 5, 2005}, {2, 4, 2005}};
自定义数据类型—typedef
tyoedef struct node {
int date;
struct node *next;
}anode;
这样, anode 就可替代 struct node
共用体
存储:
所有成员共享一个空间;
同一时间只有一个成员是有效的;
union 的大小是其最大的成员;
初始化:
对第一个成员做初始化;