一、struct简介
二、定义结构
三、结构初始化
四、访问结构成员
五、结构数组
六、结构作为函数参数
七、结构指针
参考:http://www.runoob.com/cplusplus/cpp-data-structures.html
https://blog.csdn.net/Bruce_0712/article/details/55045995
一、struct简介
struct(结构)可以定义一种复杂的数据类型来包含多种信息。由于C++内置简单数据类型只能存储一种类型的数据,对实际物理对象的描述,一种基本数据类型肯定是不够的。C++ 的结构允许用户存储不同类型的数据项。
例如,您想要记录各城市的基本情况,您可能需要设置一下属性:
name:城市名
location_x:坐标x
location_y:坐标y
populatio:人口
二、定义结构
struct 结构体类型名
{
结构成员1;
结构成员2;
......
}变量1;
//例如定义一个城市结构
struct City
{
char name[20];
double location_x;
double location_y;
int population;
}Beijing;
三、结构体初始化
//结构体初始化的几种方式
City Beijing = {"北京",120,45,1600};
City Shanghai {"上海",122,32,1500};
//若{}内无任何内容,则各个成员将被初始化为0
City Tianjin{};
四、访问结构体成员(.)
将几个城市的信息输出。
cout << "A市的基本信息:"<<endl
<< " 城市名:"<<Beijing.name<<endl<<" 坐标为:["
<<Beijing.location_x<<","<<Beijing.location_y<<"]"<<endl
<<" 人口为:"<<Beijing.population<<endl<<endl;
cout << "B市的基本信息:"<<endl
<< " 城市名:"<<Shanghai.name<<endl<<" 坐标为:["
<<Shanghai.location_x<<","<<Shanghai.location_y<<"]"<<endl
<<" 人口为:"<<Shanghai.population<<endl<<endl;
cout << "C市的基本信息:"<<endl
<< " 城市名:"<<Tianjin.name<<endl<<" 坐标为:["
<<Tianjin.location_x<<","<<Tianjin.location_y<<"]"<<endl
<<" 人口为:"<<Tianjin.population<<endl<<endl;
控制台输出结果如下:
五、结构数组
创建元素为结构的数组,如City city[10],这样,city就是一个City数组,每一个数组元素(city[0],city[1])都是一个City对象。
初始化结构数组:
City city[0]={"北京",120,45,2500};
六、结构作为函数参数
#include <iostream>
#include <string>
using namespace std;
void printCity(struct City city);
struct City
{
char name[20];
double location_x;
double location_y;
int population;
};
int main()
{
City Beijing = { "北京", 120, 45, 1600 };
City Shanghai{ "上海", 122, 32, 1500 };
City Tianjin{};
printCity(Beijing);
printCity(Shanghai);
printCity(Tianjin);
return 0;
}
void printCity(struct City city)
{
cout << "该市的基本信息:" << endl
<< " 城市名:" << city.name << endl << " 坐标为:["
<< city.location_x << "," << city.location_y << "]" << endl
<< " 人口为:" << city.population << endl << endl;
}
结果如下:
七、结构指针
定义结构指针:Struct City *city_pointer;
运用&取地址运算符:city_pointer = &Beijing;
访问结构成员:city_pointer->name;
#include <iostream>
#include <string>
using namespace std;
void printCity(struct City *city);
struct City
{
char name[20];
double location_x;
double location_y;
int population;
};
int main()
{
City Beijing = { "北京", 120, 45, 1600 };
City Shanghai{ "上海", 122, 32, 1500 };
City Tianjin{};
printCity(&Beijing);
printCity(&Shanghai);
printCity(&Tianjin);
return 0;
}
void printCity(struct City *city)
{
cout << "该市的基本信息:" << endl
<< " 城市名:" << city->name << endl << " 坐标为:["
<< city->location_x << "," << city->location_y << "]" << endl
<< " 人口为:" << city->population << endl << endl;
}
结果与前面的一致。