2.1 什么是C++语言结构体 在学习C++语言结构体前我们需要知道C++语言结构体是什么东西,形式是如何的,它的核心的组成思想是什么。
结构体简单的来说是一个数据的类型,跟int整型、char字符型类型一样,都是一种数据类型,在此别纠结它具体是什么,毕竟还没深入学,在此只要知道它也是数据类型即可。结构体是一种数据类型但它与int整型、char字符型数据不同之处是需要我们自己编写它的一个数据结构(这个数据结构是单纯意义上的数据组成)。结构体是有多个或其它数量的数据类型组成的一种结构,其它数量的数据类型可以是整形、字符型等。
由上所述我们可以知道,结构体是一个变量,但是这个变量需要我们自己去编写它的数据构成,这些数据构成是一些数据类型的变量。
我们看一下结构体示例:
struct human{
int age;
char sex;
char name;
} ;
结构体使用struct 进行声明,struct 后接的一对花括号,花括号中编写这个结构体所包含的变量有哪些,并且使用分号表示结构体内变量的结束;在struct之后花括号之前为结构体名,结构体名与变量名类似。
以上的结构体所包含的变量有整形变量age,字符变量sex以及字符变量name,名称为human;结构体我们可以看为是一个类别,该类别的组成元素有哪些。
以上结构体名为human中文译为人类,那么一个人有哪些属性呢?首先有年龄是一个整数数据,所以我在结构体中编写一个整数类型的变量age;人类还有性别,我在human结构体中使用sex表示说明并且也定义了一个char类型的变量name用于存储人类的名称代号。从以上所述可以很清楚的知道当前结构体human的一个组成。
注意:花括号末尾需要分号表示结束。
2.2 结构体的使用
在以上内容中重点强调了结构体是一个类型,那么一个类型的变量如何进行声明创建?例如int类型定义一个变量a为 int a;
,那么结构体就可以写成 结构体名 变量;
,这样写是错的,必须在结构体名前添加一个 struct关键字,表示接下来我所声明的变量为结构体: struct 结构体名 变量;
。代码示例为:
#include<iostream>
int main(){
struct human{
int age;
char sex;
char name;
} ;
struct human xiaoming;
}
以上示例中定义了一个名为human的结构体,随后根据这个结构体创建了一个xiaoming的结构体变量。 创建完结构体变量后我们需要对这个结构体变量进行赋值,赋值使用点运算符“.”,可以将这个点当作“的”使用。例如我需要为xiaoming增加一个年龄,那么就可以使用xiaoming后接一个点,表示小明的什么元素要赋值多少,可以写成:
xiaoming.age=10;
同样,其它的元素都可以这样去进行赋值,我们称这些元素为成员变量。其它成员变量的赋值:
xiaoming.sex='T';
xiaoming.name='M';
在此我赋值性别为男,用T表示,小明的名字用M表示。 那赋值完毕后如何进行取值呢?取值的方式很简单,也是使用点运算符:
xiaoming.age
我们赋值完毕后输出内容查看一下是否成功:
#include<iostream>
using namespace std;
int main(){
struct human{
int age;
char sex;
char name;
} ;
struct human xiaoming;
xiaoming.age=10;
xiaoming.sex='T';
xiaoming.name='M';
cout<< " age 为:"<<xiaoming.age<<endl;
cout<< " age 为:"<<xiaoming.sex<<endl;
cout<< " age 为:"<<xiaoming.name<<endl;
}
运行结果如下:
结构体也可以直接在编写的时候直接创建结构体变量:
struct human{
int age;
char sex;
char name;
} xiaoming;
以上代码中直接在结构体末尾花括号之后,结束分号前创建了一个结构体变量,整体代码:
#include<iostream>
using namespace std;
int main(){
struct human{
int age;
char sex;
char name;
} xiaoming;
xiaoming.age=10;
xiaoming.sex='T';
xiaoming.name='M';
cout<< " age 为:"<<xiaoming.age<<endl;
cout<< " sex为:"<<xiaoming.sex<<endl;
cout<< " name为:"<<xiaoming.name<<endl;
}
运行结果均为一致,也可以创建多个结构体变量:
#include<iostream>
using namespace std;
int main(){
struct human{
int age;
char sex;
char name;
} xiaoming,xiaohong;
xiaoming.age=10;
xiaoming.sex='T';
xiaoming.name='M';
xiaohong.age=11;
xiaohong.sex='M';
xiaohong.name='H';
cout<< " age 为:"<<xiaohong.age<<endl;
cout<< " age 为:"<<xiaohong.sex<<endl;
cout<< " age 为:"<<xiaohong.name<<endl;
}
运行结果为:
也可以在直接创建结构体变量的时候赋值:
struct human{
int age;
char sex;
char name;
} xiaoming={10,'T','M'},xiaohong;
赋值在变量名后使用一个等于号,值使用一对花括号,花括号内编写不同的值,并且用逗号进行分隔;也可以同时赋值2个结构体变量:
struct human{
int age;
char sex;
char name;
} xiaoming={10,'T','M'},xiaohong={1,'M','H'};
整体代码为:
#include<iostream>
using namespace std;
int main(){
struct human{
int age;
char sex;
char name;
} xiaoming={10,'T','M'},xiaohong={1,'M','H'};
cout<< " age 为:"<<xiaoming.age<<endl;
cout<< " sex 为:"<<xiaoming.sex<<endl;
cout<< " name 为:"<<xiaoming.name<<endl;
cout<< " age 为:"<<xiaohong.age<<endl;
cout<< " sex 为:"<<xiaohong.sex<<endl;
cout<< " name 为:"<<xiaohong.name<<endl;
}
运行结果为: