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