结构的应用
结构的应用
题目:请你用编程,完成输出学生基本信息的功能(如姓名 ID 成绩 出生日期 可以自行输入 也可以自定义数值)
在这里,我们要介绍一下结构这种功能:
结构的介绍:第一,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型。第二,相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同。
结构的格式:声明一个结构体类型的一般形式为:
struct 结构体类型名 {成员表列};
图示:
本题的参考代码:
#include <iostream> #include <cstring> using namespace std; int main() { struct Date //创建Date结构(也叫结构体) { int year; //在Date这个结构里面声明year这个整型变量,表示年 int month;//在Date这个结构里面声明month这个整型变量,表示月 int day; //在Date这个结构里面声明day这个整型变量,表示天 }; //结尾必须有分号 struct StudentEx //创建StudentEx结构 { unsigned ID; char szName[20]; float score; Date birthday; //Date是用户自创建的一种类型,用结构创建,这里表示是Date类型 }; //结尾要有分号 StudentEx stu; //用StudentEx这个结构名称做类型,声明一个stu的变量 cin>>stu.score; //往stu这个变量里的fGPA里输入,访问结构变量的成员变量用"."连接 stu.ID=12345; //把stu里的ID初始化成12345,使用形式:结构变量名.成员变量名(上面的也是一样) strcpy(stu.szName,"Tom"); //把Tom复制到stu里的szName中 stu.birthday.year=1984;//把stu中的birthday中的year初始化成1984 stu.birthday.month=12;//把stu中的birthday中的month初始化成12 stu.birthday.day=3;//把stu中的birthday中的day初始化成3 unsigned int *p=&stu.ID;//p指向stu中的ID成员变量 cout<<"学生姓名:"<<stu.szName<<endl; cout<<"学生学号:"<<*p<<endl; cout<<"学生成绩:"<<stu.score<<endl; cout<<"学生出生日期:"<<stu.birthday.year<<"-"<<stu.birthday.month<<"-"<<stu.birthday.day;//输出学生信息 }
需要注意的一点是:
Date本身是一个结构体类型,所以如果想要使用该类型里的变量,则需要进行逐层引用.这类似于后面面向对象中的对象.变量名