本文共 1696 字,大约阅读时间需要 5 分钟。
结构型是一种自定义数据类型,与基本数据类型如int的作用相同,用于定义变量。数组是一种数据结构,用于组织数据,也是一组变量,有整型数组,有某种结构型数组。类型是一类数据(或存储单元)的抽象,变量是具体的某类存储单元的标识。结构型变量与数组才有可比性。 基本数据类型是一类数的抽象,如整型是整数的抽象,而结构型是一类对象的抽象,如表示学生的结构型。与整数相比,学生具有多种属性,如姓名、性别、出生日期、英语成绩等等。抽象学生的结构型可定义为: struct Student { char name[10]; int sex; //1为男0为女 int year; int month; int day; float grade;//英语成绩 }; 有了名为学生的结构型后,需存储两个学生的信息时,他们的信息可保存在两个相关的结构型变量中。语句struct Student zhang3;定义了一个结构型变量zhang3,实际上定义了6个变量:长度为10的字符型数组zhang3.name,整型变量zhang3.sex、zhang3.year、zhang3.month、zhang3.day,单精度变量zhang3.grade。 定义一个数组变量也定义了多个变量,但这些变量的类型相同,而结构型变量的多个成员变量类型可以不同。 使用结构型变量实际上就是使用其多个“普通”的成员变量,如下面程序所示。 #include <stdio.h> struct Student { char name[10]; int sex; //1为男0为女 int year; int month; int day; float grade;//英语成绩 }; #include <stdio.h> int main() { struct Student zhang3; printf("请输入张三的信息\n"); scanf("%s", zhang3.name); scanf("%d", &zhang3.sex); scanf("%d%d%d", &zhang3.year, &zhang3.month, &zhang3.day); scanf("%f", &zhang3.grade); printf("张三的信息:\n"); printf("姓名:%s\n", zhang3.name); printf("性别:%s\n", zhang3.sex==1 ? "男" : "女"); printf("出生日期:%d年%d月%d日\n", zhang3.year, zhang3.month, zhang3.day); printf("英语成绩:%.1f\n", zhang3.grade); return 0; } 程序的执行情况如下: 请输入张三的信息 Zhang3 1 2000 1 1 93.9 张三的信息: 姓名:Zhang3 性别:男 出生日期:2000年1月1日 英语成绩:93.9 可以定义结构型数组,如语句struct Student stu[2];就定义了一个名为stu的结构型数组,实际上也就是定义了两个名为stu[0]和stu[1]结构型变量,不过,每个结构型变量又包含了多个“普通”的成员变量,即对于结构型变量stu[0],应理解为多个“普通”的变量,如长度为10的字符型数组stu[0].name(下标操作符和成员操作符的优先级相同,左结合)……。 也可以用间接引用的方式通过指针使用相关的存储单元。语句struct Student *pStu;就定义了一个结构型指针变量,通过赋值操作使其指向某个存储单元,如pStu=&zhang3;,则*pStu与zhang3标识了同一个存储单元,两者可以互换使用。通过指针变量使用结构型的成员变量需用(*pStu).name(间接引用操作符的优先级比成员操作符的低,故不能省略括号),但常用pStu->name的形式。 结构型变量用于存储具有多个属性的对象,使用结构型变量就是使用其多个“普通”的成员变量。 (练习结构型数组和结构型指针的用法)转载地址:http://mcdti.baihongyu.com/