结构
结构声明structure declaration:
1
2
3
4
5
6
7
|
struct book {
char title[MAXTITL];
char author[MAXAUTL];
float value;
};
struct book library; // 把library声明为一个使用book结构布局的结构变量
|
结构可以嵌套。
结构对象使用 .
访问成员变量。
结构指针使用 ->
访问成员变量。
一个结构可以赋值给另一个结构。
1
2
|
struct names right_field = {"Kiyon", "Lin"};
struct names captain = right_field;
|
联合
联合(union)是一种数据类型,它能在同一个内存空间中储存不同的数据类型(不是同时储存)。其典型的用法是,设计一种表以储存既无规律,事先也不知道顺序的混合类型。
1
2
3
4
5
|
union hold {
int digit;
double bigfl;
char letter;
};
|
声明的联合只能储存一个int类型的值或者一个double类型的值,或者char类型的值。并且编译器分配的内存是联合声明中占用最大字节的类型内存。
1
2
3
4
|
union hold fit;
fit.digit = 23; // 把23储存在fit, 占2字节
fit.bigfl = 2.0; // 清除23,储存2.0,占8字节
fit.letter = 'h'; // 清除2.0, 储存h, 占1字节
|
枚举类型
可以用枚举类型(enumerated type)声明符号名称来表示整型常量。使用enum关键字声明。
1
2
3
4
5
6
7
|
enum spectrum {red, orange, yello, green, blue, violet};
enum spectrum color;
int c;
color = blue;
if(color == yellow);
for(color = red; color <= violet; color++);
|
函数指针
1
2
3
4
|
void (*pf)(char *); // pf是一个指向函数的指针
// 使用
void show(void (*pf)(char *), char *str);
|
可以使用回调函数的思路理解。
使用 typedef
创建别名:
1
2
3
|
typedef void (*V_FP_CHARP)(char *);
void show(V_FP_CHARP fp, char *);
V_FP_CHARP pfun;
|