认识结构体

结构体声明

在C++语言中,除了int(整型)long long(长整型)short(短整型)string(字符串)bool(布尔型)float(单精度浮点型)double(双精度浮点型)等等数据类型外,咱们也可以根据自己的需要,用struct自定义结构体数据类型。使用结构体必须要声明一个结构体类型,再定义和使用结构体变量。结构体类型的声明格式如下:

struct 类型名

{

数据类型1  成员名1;

数据类型2  成员名2;

......

};

(一定要打分号,分号表示结构体声明完成)

例如,声明一个学生类型的结构体:

struct  student

{

int age;

string name;

int height;

};

上面定义了一种新的结构体数据类型:student类型,student类型含有三个成员:age、name、height。

结构体变量

(一)结构体变量的定义

格式是: 结构体类型名  变量名列表;

例如:在声明了student类型之后,就可以用下面的格式来定义变量:

student a,b,c;  //变量a,b,c是student类型的变量。

(二)结构体变量的成员的引用

结构体变量的成员的引用,格式是:结构体变量名.成员名。

例如: student a;   //a是student类型变量。

如果需要引用a的name成员,那么格式是:a.name, 因为a.name是string类型,因此它的使用方法普通的string类型变量相同。同理,如果需要引用a的age成员,那么格式是a.age,a.age的使用方法和int类型变量的使用方法相同。

(三)结构体变量的读入输出

可以通过cin和cout对结构体变量的每个成员进行读入和输出操作。

studnet a;   //a是student类型变量。

cin>>a.name>>a.age>>a.height;  //读入a的姓名、年龄、身高

cout<<a.name<<" "<<a.age<<" "<<a.height<<endl; //输出a的姓名、年龄、身高
(四)结构体变量的初始化

回顾一下在定义一个整型变量时可以进行初始化工作,例如:

int age=15;  //定义了age变量,它是int类型,而且age的初始值为15。

那么结构体变量在定义时是否可以进行初始化呢?可以!

struct  student  //声明一种student类型

{

int age;

string name;

int height;

};

student a={15,"zhangsan",160};  //a是student类型变量,年龄是15,姓名是"zhangsan",身高是160。
(五)结构体变量的赋值

定义了结构体变量之后,可以给结构体变量的各个成员赋值。

student  a;

a.age = 18;

a.name = "zhangsan";

a.height=165;
(六)交换结构体变量

我们可以使用swap函数来交换两个整数变量、两个字符串变量等等。我们也可以使用swap函数来交换两个结构体变量。例如:

student a,b;

cin>>a.age>>a.name>>a.height;

cin>>b.age>>b.name>>b.heigth;

swap(a,b);  //交换a和b变量。

结构体数组

(一)结构体数组的定义
struct student

{

int age;

string name;

int height;

};

上面声明了student这个结构体类型。如果我们要保存100个学生的信息,怎么办?

可以定义一个student类型的数组,格式如下:

student a[100];   //a是stduent类型的数组,这个数组可以保存100个student类型的变量,分别是a[0]、a[1]、a[2]、...... a[99]。
(二)结构体数组的读入输出

可以用循环语句读入结构体数组的信息。

下面是读入100个学生的代码:

student a[100];   //定义一个数组,这个数组的类型是student类型,保存100个学生信息。

for(int i=0; i<100; i++)  //读入100个学生的信息。

{

cin>>a[i].age>>a[i].name>>a[i].height;  //读入第i个学生的信息。

}

for(int i=99;i>=0; i--)  //反向输出每个学生的信息

{

  cout<<a[i].name<<" "<<a[i].age<<" "<<a[i].height<<endl;  //输出第i个学生信息

}
点个赞呗
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值