欢迎来到天天文库
浏览记录
ID:45067925
大小:289.00 KB
页数:78页
时间:2019-11-09
《C语言讲义第07章-结构体与其他构造数据类型(原)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章 结构体与其他构造数据类型《C语言程序设计》主要内容结构体结构体数组的定义和引用指向结构体的指针结构体与函数复杂的结构体链表共用体位域枚举类型类型定义typedef小结7.1结构体表7‑1学生信息表No.(学号)Name(姓名)Sex(性别)Age(年龄)Department(院系)05030101WangLiM18Economy&Commerce05020302ZhangQiangF19Computerscience……………7.1结构体结构体类型的定义形式:struct[结构体类型名]{数据类型成员1;数据类型成员
2、2;…数据类型成员n;};7.1结构体例如:表7-1对应的结构体类型定义可以是:structstu_info{charno[8];/*学号*/charname[10];/*姓名*/charsex;/*性别*/intage;/*年龄*/chardepartment[20];/*院系*/};7.1结构体结构体变量定义有以下三种形式:先定义结构体类型,再定义结构体类型变量例如:在结构体类型定义完成后,再定义变量。structstu_rec{/*定义学生记录结构体类型*/charnum[8];/*学号*/charname[10];/
3、*学生姓名*/charsex;/*性别*/intscore[4];/*四科考试成绩*/};structstu_recstudent1,student2;/*定义结构体类型变量*/7.1结构体定义结构体类型的同时定义结构体类型变量例如:在定义结构体类型时定义变量。structdate{intyear;intmonth;intday;}mydate1,mydate2;7.1结构体直接定义结构体类型变量例如:结构体类型定义时不指定类型名,而直接定义变量。struct{charno[8]/*编号*/charname[10];/*姓名
4、*/charsex;/*性别*/floatb_salary,f_salary,p_salary;/*基本工资、活工资、奖金*/}person1,person2;/*定义该结构体类型变量*/7.1结构体结构体变量一旦进入其作用域,系统便根据结构体类型定义时成员排列的先后,自动为结构体变量的每一个成员分配相应的存储空间。结构体变量的各个成员均有自己的存储空间,结构体变量所占存储空间的大小为各成员所占空间之和。例如:student1所占空间大小为:8+10+1+4*2=27(字节)。mydate1所点空间大小为:2+2+2=6(字
5、节)。person1所占空间大小为:8+10+1+3*4=31(字节)。另外,还可以直接使用sizeof()关键字来计算结构体变量的大小。例如:printf(″%d,%d″,sizeof(student1),sizeof(person1));该语句的输出结果为:27,317.1结构体C语言中,对结构体变量的输入、输出、赋值和运算等操作一般都是通过结构体变量的成员引用来实现的。结构体变量的成员引用,可使用成员运算符“.”来引用。引用的形式为:<结构体类型变量名>.<成员名>若定义的结构体类型及变量如下:structdate
6、{intday;intmonth;intyear;}today;则变量today各成员的引用形式为:today.day、today.month、today.year。7.1结构体结构体变量的初始化与一维基本类型数组的初始化方法相似。不同的是,对一维数组来说,是初始化数组元素(各元素类型相同),对结构体变量,则是初始化结构体成员(各成员类型可能不同)。由于结构体类型变量可以汇集各类不同数据类型的成员,所以结构体类型变量的初始化必须在结构体类型变量定义时进行。例如:stu_info结构体类型定义如前所述,该类型变量的初始化形式为
7、:structstu_infostudent={"06050113","liping",′f′,20,"computerscience"};7.1结构体也可以使用标准的输入、输出函数完成对结构体类型变量成员的输入(赋值)、输出。由于结构体类型变量成员的数据类型通常是不一样的,用scanf同时输入不同类型的成员数据常常会出现意想不到的情况,解决的方法有以下两种:7.1结构体利用转换函数将结构体类型变量成员以字符串的形式输入,利用C的类型转换函数将其转换为所需类型。类型转换的函数是:atoi(char*str);将数字字符串转换
8、为整型。atof(char*str);将数字字符串转换为双精度的实型。atol(char*str);将数字字串转换长整型。使用上述函数,要包含头文件"stdlib.h"。7.1结构体例7‑1类型转换函数在结构体变量数据输入中的应用示例。定义结构体类型及变量,输入一个学生的有关信息并输出。例
此文档下载收益归作者所有