文档介绍:C语言程序设计------、紧凑、高效得到多于一个的函数返回值有效地表示复杂的数据结构动态分配内存能方便地使用字符串、数组能直接处理内存地址等指针是C语言的重要特色。使用指针可以:问题:学籍管理需要每个学生的下列数据:学号、姓名、性别、年龄、分数,请用C语言程序存储并处理一组学生的学籍。单个学生学籍的数据结构学号(num):int型姓名(name):char[]型性别(sex):char型年龄(age):int型分数(score):float型单个学生学籍的数据结构如何定义?多个学生学籍的数据结构如何定义?这些信息数据之间相互关联,适合看作一个整体。但数据类型不一致,仅用已学数据类型无法解决。需要构造一种新的数据类型————结构体。——是用户根据自己的需要一种构造类型数据。结构体由若干不同类型的数据项组成,构成结构体的各个数据项称为结构体成员。struct[结构体名]{数据类型1成员名1;数据类型2成员名2;……数据类型n成员名n;};{}中是组成该结构体的成员。成员类型可以是基本型或构造型struct是关键字,不能省略用户定义的合法标识符。可省:无名结构体末尾分号不能省结构体类型声明----构造自己所需的结构体类型1、结构体类型声明namenumsexagescoreaddr2字节2字节20字节1字节4字节30字节……..structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};结构体名成员名例声明结构体类型structstudent注意:结构体类型声明只是定义了一种新的类型,类似int等类型。它是对结构的组织形式的描述,(类似于房屋户型图),系统还没分配实际内存空间。结构的组织形式描述只有定义结构体类型的变量,:struct结构体名{类型标识符成员名;类型标识符成员名;…………….};struct结构体名变量名表列;(1)先定义(声明)结构体类型再定义变量名例structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};//结构体类型的声明structstudentstudent1,student2;//结构体变量的定义2、结构体变量定义有了类型后,就可以定义变量。三种形式:(2)定义结构体类型的同时定义结构体变量一般形式:struct结构体名{类型标识符成员名;类型标识符成员名;…………….}变量名表列;例structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}student1,student2;、结构体变量需要的内存等于结构体变量所有成员占内存之和22012 430Numnamesexagescoreaddrstudent1student1在内存中占59个字节,(2+20+1+2+4+30=59)。利用表达式sizeof(student1)或sizeof(structstudent)或可自动求得注意:结构体类型与结构体变量概念不同类型:不分配内存;变量:分配内存类型:不能赋值、存取、运算;变量:、结构体变量初始化struct结构体名{类型标识符成员名;类型标识符成员名;…………….};struct结构体名结构体变量={初始数据};例structstudent{intnum;charname[20];charsex;intage;charaddr[30];};structstudentstudent1={100102,“WangLin”,‘M’,20,“Beijing”};形式一: