一、结构体的定义
结构体就是一种数据结构存放着不同的数据类型,例如int,string,char,int *等等,而结构题的公式为:
struct 结构体名{数据类型}
举例:
struct student{
int age;
string name;
int hight;
}
上面就是结构体的基本形式,有了这个基本形式之后我们就可以创建结构体了。
二、结构体的使用
我们知道了结构体的基本形式之后我们可以试着初始化和实例化结构体了,其中初始化分为直接初始化和简介初始化,如:
#include<iostream>
#include<string>
using namespace std;
struct student{
int age;
string name;
int money;
};
int main()
{
//间接初始化
struct student lishuo;
lishuo.age = 18;
lishuo.name = "lishuo";
lishuo.money = 20;
//直接初始化
struct student lishuo1 = {19,"lishuo1",24};
cout<<lishuo.age<<endl;
cout<<lishuo.name<<endl;
cout<<lishuo.money<<endl;
cout<<lishuo1.age<<endl;
cout<<lishuo1.name<<endl;
cout<<lishuo1.money<<endl;
}
输出:
18
lishuo
20
19
lishuo1
24
三、结构体的成员函数
结构体中不仅仅可以包含简单的整形、字符型、字符串行的成员,也可以包含成员函数,我们实例化一个结构体之后可以直接调用这个函数,这个函数在这里又叫做方法(功能),例:
#include<iostream>
#include<string>
using namespace std;
struct student{
int age;
string name;
int money;
void fun()
{
cout<<"lishuo is having fun"<<endl;
}
};
int main()
{
//实例化一个结构体,并且直接初始化
struct student lishuo = {18,"lishuo",20};
cout<<lishuo.age<<endl;
cout<<lishuo.name<<endl;
cout<<lishuo.money<<endl;
//调用fun方法
lishuo.fun();
}
输出:
18
lishuo
20
lishuo is having fun
四、结构体数组
当我们想要初始化很多结构体的时候我们可以建立一个结构体数组方便管理,如:
#include<iostream>
#include<string>
using namespace std;
struct student{
int age;
string name;
void fun()
{
cout<<"lishuo is having fun"<<endl;
}
};
int main()
{
struct student stu[2] = {{18,"lishuo"},{19,"lishuo1"}};
for(int i = 0;i < 2;i++)
{
cout<<stu[i].age<<" "<<stu[i].name<<endl;
}
}
输出:
18 lishuo
19 lishuo1
五、typedef小用法
这里说下typedef在结构体中的常用方法,typedef这个用法可以更改结构体的名字,那么之后每次再次实例化结构体的时候就不用每次都写struct就可以了,例:
#include<iostream>
#include<string>
using namespace std;
typedef struct{//typedef重新命名结构体
int age;
string name;
void fun()
{
cout<<"lishuo is having fun"<<endl;
}
}student;
int main()
{
student stu[2] = {{18,"lishuo"},{19,"lishuo1"}};
for(int i = 0;i < 2;i++)
{
cout<<stu[i].age<<" "<<stu[i].name<<endl;
}
}
六、结构体指针
我们也可以用结构体指针的方式来创建一个结构体,例:
#include<iostream>
#include<string>
using namespace std;
typedef struct{
int age;
string name;
void fun()
{
cout<<"lishuo is having fun"<<endl;
}
}student;
int main()
{
student lishuo;
student *p;
p = &lishuo;
p->age = 30;
(*p).name = "lishuo";
cout<<lishuo.age<<endl<<lishuo.name<<endl;
}
输出:
30
lishuo
注意:当用指针初始化结构体的时候要用->这个符号进行初始化和调用。
总结
这些就是目前经常用到的结构体相关的用法,如果后期遇到了其他结构体相关的用法我会继续更新的,希望大家要努力学习(pao lu)哦!