day+=dThl[leap][i] ;
dp -> yearDay=day;
}
改写后的函数通过指针形式参数引用结构成员,并将计算结果存放在结构的相应成员中,不再返回结果。对该函数的调用方式也需相应地改写成:
dayofYear(&date);
7.2 共用型和共用型变量
1.共用型
在某些特殊应用中,要求某数据对象在程序执行的不同时期能存储不同类型的值。C语言的共用型能满足这个要求。共用型的成员从同一地址开始存储。但任一时刻只存储其中一个成员,由最近放入的内容决定该区域究竟是哪一个成员的值。分配给共用型的存储区域大小,要求至少能存储其中最大一种成员。定义共用型的一般形式为
union 共用型名 {
数据类型1 成员1名;
数据类型2 成员2名;
……
数据类型n 成员n名;
};
例如,下面定义的共用型(union udata) 能存储整型,或字符型,或浮点型的数据:
union udata {
int ival;
char chval;
float fval;
};
2.共用型变目的定义
与结构变量的定义方法一样,共用型变量的定义方法有以下几种:
(1) 先定义共用型,然后定义共用型变量、共用型数组、共用型指针等。
(2) 定义共用型同时定义共用型变量、共用型数组、共用型指针等。
(3) 定义无名共用型同时定义共用型变量、共用型数组、共用型指针等。
3.共用型变目初始化
共用型变量定义时,也可初始化,但只能对共用型中的第一个成员初始化。
4.引用共用型变目的成员
引用共用型变量成员的方法与引用结构变量成员的方法相同。共用型也可出现在结构和数组中,共用型也可包含有结构和数组。引用结构中的共用型或共用型中的结构的书写形式与引用嵌套结构成员的书写形式一样。例如,以下代码
Struct {
char name[30]; /* 标识符 */
int uflag; /* 存于共用型成员中的值的类型 */
union /* 存储变量值 */
{ int ival; /* 当变量为整型时 */
char chval /* 当变量为字符型时 */
float fval; /*当变量为浮点型时 */
} uval;
} symTbl[1000]; /* 变量表 */
定义了一个结构数组symTbl。用symTbl[50].uval.fval引用结构数组symTbl中的第50个结构的共用型成员uval的fval(视其中的共用型为浮点型数据)。
函数的形式参数不能是共用型类型,函数的结果也不能是共用型类型。但指向共用型的指针可以作为函数形式参数,函数也可以返回指向共用型的指针。
7.3 枚举型和枚举型变量
1.枚举型
除数字、文字信息之外,还有专用名称信息,如反映电梯运行状态的有上(UP) ,下(DOWN) ,停(sTOP) ;又如表示星期几的名称等。为提高程序描述问题时的直观性,引入枚举型。程序用枚举方法列举一组标识符作为枚举型的值的集合。当一个变量具有这种枚举型时,它就能取枚举型的标识将值。定义枚举型的一般形式为
本新闻共
6页,当前在第
4页
1 2 3 4 5 6