结构体--基本概念
时间:2010-09-14 来源:云端小飞象cg
在前面的章节中,介绍了基本数据类型——字符型(char)、整型(int)、单精度浮点型(float))。基本数据类型是ANSI C系统规定的标准数据类型,在程序设计中直接应用(例如直接定义变量和数组),而不必关心此类型如何定义。简单数据类型及其变量的引入,使得描述现实事物某一方面的特性成为可能,例如int nCount可以表示事物的数量特性。为了描述集合类型信息(如向量和矩阵),在C语言中引入一种自定义数据类型——数组,数组中的各个元素具有相同的数据类型。定义数组的实质是定义在内存中连续存放的由若干具有相同数据类型变量组成的集合,例如 int nCounts[10]可以理解为10个连续存放的整型变量的集合。
无论是数组还是基本数据类型仅仅描述了事物某一方面的特性,但是,一种物体或事物往往是具有多方面的属性。例如描述一个同学可能要包括学号、姓名、性别、年龄、成绩、班级等多方面的信息。根据前面的知识,需要定义一组变量来描述上述信息。
int Code; /*学号*/
char Name[20]; /*姓名*/
char Sex; /*性别*/
unsigned int Age; /*年龄*/
…
例如描述一个同学可能要包括学号、姓名、性别、年龄、成绩、班级等多方面的信息。根据前面的知识,需要定义一组变量来描述上述信息。
int Code; /*学号*/
char Name[20]; /*姓名*/
char Sex; /*性别*/
unsigned int Age; /*年龄*/
…
但是上述几个变量之间在组织和存储上没有强制的约束关系,不能够将其作为一个整体来对待,而这些属性在逻辑上属于同一事物,应当作为一个整体来处理。在C语言中引入了一种新的自定义数据类型——结构体(structure )。引入结构体之后,程序设计人员可以根据需要定义多种自定义的数据类型,用于描述不同类型的事物。为了描述学生(假设仅仅需要描述其中的学号、姓名、性别和年龄等信息),可以定义如下的自定义数据类型 struct Student。
struct Student
{
int Code; /*学号*/
char Name[20]; /*姓名*/
char Sex; /*性别*/
unsigned int Age; /*年龄*/
};
在完成一个结构体定义之后,就可以像定义基本数据类型变量一样,定义结构体类型的变量和数组。例如:
struct Student oStudent; /*定义struct Student类型变量*/
struct Student oStudents[10]; /*定义类型数组*/
例如,定义一个结构体描述通讯地址。
struct CAddress
{
char Name[20]; /*单位名称*/
char Zip[7]; /*邮政编码*/
char Telephone[10]; /*电话*/
char Fax[10]; /*传真*/
};
例如描述一个同学可能要包括学号、姓名、性别、年龄、成绩、班级等多方面的信息。根据前面的知识,需要定义一组变量来描述上述信息。
int Code; /*学号*/
char Name[20]; /*姓名*/
char Sex; /*性别*/
unsigned int Age; /*年龄*/
…
但是上述几个变量之间在组织和存储上没有强制的约束关系,不能够将其作为一个整体来对待,而这些属性在逻辑上属于同一事物,应当作为一个整体来处理。在C语言中引入了一种新的自定义数据类型——结构体(structure )。引入结构体之后,程序设计人员可以根据需要定义多种自定义的数据类型,用于描述不同类型的事物。为了描述学生(假设仅仅需要描述其中的学号、姓名、性别和年龄等信息),可以定义如下的自定义数据类型 struct Student。
struct Student
{
int Code; /*学号*/
char Name[20]; /*姓名*/
char Sex; /*性别*/
unsigned int Age; /*年龄*/
};
在完成一个结构体定义之后,就可以像定义基本数据类型变量一样,定义结构体类型的变量和数组。例如:
struct Student oStudent; /*定义struct Student类型变量*/
struct Student oStudents[10]; /*定义类型数组*/
例如,定义一个结构体描述通讯地址。
struct CAddress
{
char Name[20]; /*单位名称*/
char Zip[7]; /*邮政编码*/
char Telephone[10]; /*电话*/
char Fax[10]; /*传真*/
};