45-本章小结
14.16 本章小结
C结构提供在相同的数据对象中存储多个不同类型数据项的方法。可以使用标记来标识一个具体的结构模板,并声明该类型的变量。通过成员点运算符( . )可以使用结构模版中的标签来访问结构的各个成员。
如果有一个指向结构的指针,可以用该指针和间接成员运算符( -> )代替结构名和点运算符来访问结构的各成员。和数组不同,结构名不是结构的地址,要在结构名前使用 & 运算符才能获得结构的地址。
一贯以来,与结构相关的函数都使用指向结构的指针作为参数。现在的C允许把结构作为参数传递,作为返回值和同类型结构之间赋值。然而,传递结构的地址通常更有效。
联合使用与结构相同的语法。然而,联合的成员共享一个共同的存储空间。联合同一时间内只能存储一个单独的数据项,不像结构那样同时存储多种数据类型。也就是说,结构可以同时存储一个 int 类型数据、一个 double 类型数据和一个 char 类型数据,而相应的联合只能保存一个 int 类型数据,或者一个 double 类型数据,或者一个 char 类型数据。
通过枚举可以创建一系列代表整型常量(枚举常量)的符号和定义相关联的枚举类型。
typedef 工具可用于建立C标准类型的别名或缩写。
函数名代表函数的地址,可以把函数的地址作为参数传递给其他函数,然后这些函数就可以使用被指向的函数。如果把特定函数的地址赋给一个名为 pf 的函数指针,可以通过以下两种方式调用该函数:
#include <math.h> /* 提供sin()函数的原型:double sin(double) */
...
double (*pdf)(double);
double x;
pdf = sin;
x = (*pdf)(1.2); // 调用sin(1.2)
x = pdf(1.2); // 同样调用 sin(1.2)