c++入门教程(十四)

本文介绍了如何在C++中通过结构体(struct)来自定义数据类型,并展示了如何使用自定义类型存储复杂的数据结构,如学生的姓名、年龄和学号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面我们提到了用于方便的声明多个变量的数组,解决了保存一个班级的人的年龄的问题,但是,一个人不光只有年龄这一个属性,还有姓名,学号等.如果想存储这些东西,可以另外声明几个数组,按顺序分别来保存这些属性  类似

#include<iostream>
#include<string>
using namespace std;

void main(){
	int age[3] = {17,16,15};
	string name[3] = {"大仙","止水","田叔叔"};
	string num[3] = {"26810101","26810102","26680115"};
	for(int i=0; i<3; i++){
		cout<<"姓名:"<<name[i]<<endl<<"年龄:"<<age[i]<<endl<<"学号:"<<num[i]<<endl<<endl<<endl;
	}
}
结果如下

但是,如果有种类型的变量可以直接同时存储姓名,年龄,学号等信息就更好了。类似的对类型的需求有无数种,c++不可能每一种都满足。但是,它提供了自己定义新类型的功能。这样子我们就可以随心所欲的定义和使用我们自己的类型了。语法如下

struct 想自定义的类型名{

属性类型  属性名;

属性类型  属性名;

.

.

.

属性类型 属性名;

};  注意 ,最后面有一个分号的

这样我们就可以自己新发明一个  学生类型  了  如下:

struct student{
	int age;
	string name;
	string num;
};
声明变量的时候  我们新发明的  student类型和常用的那些数据类型声明变量的方法相同。如下:

	student a,b,c;
然后,我们需要对student类型的变量中的每个属性进行修改,或者得到它们的值。我们用 变量名称.属性名称  来得到对应的属性  如下

a.name
对新类型变量的属性的操作和对普通类型变量的操作方式相同,例如:

a.age = 12;
cout<<b.age;
c.age = b.age +2;


现在,我们学会了发明新类型,也学会了使用它里面的属性了,现在,我们来用新类型实现最初的梦想吧

#include<iostream>
#include<string>
using namespace std;

struct student{
	int age;
	string name;
	string num;
};

void main(){
	student a[3];
	a[0].age = 17;
	a[0].name = "大仙";
	a[0].num = "26810101";
	a[1].age = 16;
	a[1].name = "止水";
	a[1].num = "26810102";
	a[2].age = 15;
	a[2].name = "田叔叔";
	a[2].num = "26680115";

	for(int i=0; i<3; i++){
		cout<<"姓名:"<<a[i].name<<endl<<"年龄:"<<a[i].age<<endl<<"学号:"<<a[i].num<<endl<<endl<<endl;
	}

}

结果同第一个。然后我们发现  没给属性都要赋值一次好累哦,难道没有像数组初始化一样的操作吗?  有,自定义的变量可以通过大括号将所有属性值括起来属性值直接用逗号分割的形式赋值。如下

student b = {12,"止水","26810115"};

上面这段渣渣的vc6.0不支持,但是高级点的是可以的 代码如下

下面是结果


 然后下面是更简便的操作


结果如下(vc6.0搞不定,我用的其它编译器)


有时间可以试一试输入几个学生的基本信息,然后再输出所有学生的信息,或者 输出满足某些条件的学生的信息(比如输出小于12岁的学生的信息)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值