| 结构体类型变量的定义和引用(二) | 
          
            |  | 
          
            | www.nanhushi.com     佚名   不详  | 
          
            | 
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 。
 
 | 
          
            |   | 
 | 
          
            | 文章录入:杜斌    责任编辑:杜斌 | 
          
            |  | 上一篇文章: 结构体类型变量的定义和引用(一) 下一篇文章: 计算机二级辅导:main函数的参数
 | 
          
            | 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | 
          
            |  | 
 
 |