7.1.2 结构体类型变量的引用 学习了怎样定义结构体类型和结构体类型变量,怎样正确地引用该结构体类型变量的成员呢?C 规定引用的形式为: <结构体类型变量名> . <成员名> 若我们定义的结构体类型及变量如下: struct data { int day; int month; int year; } time1,time2; 则变量time1和time2各成员的引用形式为:time1.day、 time1.month、time1.year及time2.day、time2.month、 time2.year,如图7-1所示。 其结构体类型变量的各成员与相应的简单类型变量使 用方法完全相同。 7.1.3结构体类型变量的初始化 由于结构体类型变量汇集了各类不同数据类型的成员,所以结构体类型变量的初始化就略显复杂。 结构体类型变量的定义和初始化为: struct stu / *定义学生结构体类型* / { char name[20]; / * 学生姓名* / char sex; / * 性别* / long num; / *学号* / float score[3]; / * 三科考试成绩* / }; struct stu student={"liping",'f',970541,98.5,97.4,95}; 我们也可以通过C提供的输入输出函数完成对结构体类型变量成员的输入输出。由于结构体类型变量成员的数据类型通常是不一样的,所以要将结构体类型变量成员以字符串的形式输入,利用C的类型转换函数将其转换为所需类型。类型转换的函数是: int atoi(char *str);转换str所指向的字符串为整型,其函数的返回值为整型。 double atof(char*str);转换str所指向的字符串为实型,其函数的返回值为双精度的实型。 long atol(char*str);转换str所指向的字符串为长整型,其函数的返回值为长整型。 使用上述函数,要包含头文件"stdlib.h"。 对上述的结构体类型变量成员输入采用的一般形式: char temp[20]; gets(student.name);/*输入姓名*/ student.sex=getchar();/*输入性别*/ gets(temp);/*输入学号*/ student.num=atol(temp);/*转换为长整型*/ for(i=0;i<3;i++)/*输入三科成绩*/ { gets(temp); student.score[i]=atoi(temp); } 对该结构体类型变量成员的输出也必须采用各成员独立输出,而不能将结构体类型变量以整体的形式输入输出。 C允许针对具体问题定义各种各样的结构体类型,甚至是嵌套的结构体类型。 structdata { intday; 上述对结构体类型变量的三种定义形式均可在定义时初始化。结构体类型变量完成初始化后,即各成员的值分别为:student.name="liping"、student.sex='f'、student.num=970541、 student.score[0]=98.5、student.score[1]=97.4、student.score[2]=95。其存储在内存的情况如图7-2所示。 int mouth; int year; } ; struct stu { char name[20]; struct data birthday; 出/*生年月,嵌套的结构体类型*/ long num; } person; 该结构体类型变量成员的引用形式: person.name 、person.birthday.day、person. birthday.month、person. birthday. y e a r、person.num 。
 
说明:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
2/2 首页 上一页 1 2 |