一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第8天,点击查看活动详情。
1.1 结构体的概念
我们所学的整型浮点型字符型等,都是==内置的数据类型==,编译器给我们提供好的数据类型。而结构体属于用户==自定义的数据类型==,允许用户存储不同的数据类型,即一些类型集合组成的一个类型。
1.2 结构体定义和使用
语法:struct 结构体名 { 结构体成员列表 };
通过结构体创建变量的方式有三种:
- struct 结构体名 变量名
#include<iostream>
#include<string>
using namespace std;
struct likes_idol
{
//成员列表
string name; //姓名
string country;
int age; //年龄
double height; //身高(米)
};
int main() {
//结构体变量创建方式1
struct likes_idol Micchi; //struct 关键字可以省略
Micchi.name = "道枝骏佑";
Micchi.country = "Japan";
Micchi.age = 19;
Micchi.height = 1.79;
cout << "姓名:" << Micchi.name <<" 国籍:"<<Micchi.country<< " 年龄:"
<< Micchi.age << " 身高:" << Micchi.height << endl;
}
- struct 结构体名 变量名 = { 成员1值 , 成员2值...}
struct likes_idol
{
//成员列表
string name; //姓名
string country;
int age; //年龄
double height; //身高(米)
};
struct likes_idol Micchi = { "道枝骏佑","Japan",19,1.79};//struct 关键字可以省略
cout << "姓名:" << Micchi.name <<" 国籍:"<<Micchi.country<< " 年龄:"
<< Micchi.age << " 身高:" << Micchi.height << endl;
- 定义结构体时顺便创建变量
struct likes_idol
{
//成员列表
string name; //姓名
string country;
int age; //年龄
double height; //身高(米)
}Micchi;
输出:
姓名:道枝骏佑 国籍:Japan 年龄:19 身高:1.79
tips:
1:定义结构体时的关键字是struct,不可省略
2:创建结构体变量时,关键字struct可以省略
3:结构体变量利用操作符 ''.'' 访问成员
1.3结构体数组
**作用:**将自定义的结构体放入到数组中方便维护
语法: struct 结构体名 数组名[元素个数] = { {} , {} , ... {} }
#include<iostream>
#include<string>
using namespace std;
struct likes_idol
{
//成员列表
string name; //姓名
string country;
int age; //年龄
double height; //身高(米)
};
int main() {
struct likes_idol h[3] =
{
{"白敬亭","China",28,1.83},
{"赵丽颖","China",32,1.65},
{"道枝骏佑","Japan",19,1.79}
};
//结构体变量创建方式1
for(int i;i < 3;i++)
{
cout<<h[i].name<<" "<<h[i].country<<" "<<h[i].height<<" "<<h[i].height<<endl;
}
system("pause");
return 0;
}
输出:
白敬亭 China 1.83 1.83
赵丽颖 China 1.65 1.65
道枝骏佑 Japan 1.79 1.79
1.4 结构体指针
作用: 通过指针访问结构体中的成员
- 利用操作符
->可以通过结构体指针访问结构体属性
#include<iostream>
#include<string>
using namespace std;
struct likes_idol
{
//成员列表
string name; //姓名
string country;
int age; //年龄
double height; //身高(米)
};
int main() {
struct likes_idol h[3] =
{
{"白敬亭","China",28,1.83},
{"赵丽颖","China",32,1.65},
{"道枝骏佑","Japan",19,1.79}
};
struct likes_idol *p = &h[0];
//结构体变量创建方式1
for(int i;i < 3;i++)
{
cout<<p->name<<" "<<p->country<<" "
<<p->height<<" "<<p->height<<endl;
p++;//指针依次访问h[i]
}
system("pause");
return 0;
}
输出:
白敬亭 China 1.83 1.83
赵丽颖 China 1.65 1.65
道枝骏佑 Japan 1.79 1.79
请按任意键继续. . .
注意: 关于结构体的类型要注意的几点:
(1)类型与变量是不同的概念,不要混淆。只能对结构体变量中的成员赋值,而不能对结构体类型赋值。
(2)对结构体变量中的成员(即“域”),可以单独使用,它的作用与地位相当于同类型的普通变量。
(3)结构体的成员也可以是一个结构体变量。 (4)结构体中的成员名可以与程序中的变量名相同,但二者没有关系。
例如,程序中可以另定义一个整形变量,他与student中的num是两回事,互不影响。
(5) 在定义了结构体变量之后,就可以引用这个变量。
(6)引用结构体变量中的一个成员的值
引用方式:结构体变量名.成员名
其中“.”是成员运算符,它在所有的运算符中优先级最高。