0801C++结构体基础

121 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 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)引用结构体变量中的一个成员的值

引用方式:结构体变量名.成员名

其中“.”是成员运算符,它在所有的运算符中优先级最高。