结构体就是自己定义的数据类型,和int double char 的区别就是后者是这种语言自带的,而结构体是我们自己定义的,使用方法上和后者没什么大的区别。
代码创建了结构体student,可以理解为定义了一个自己使用的“关键字”student。然后创建了s1[ ]这个结构体数组,s2这个结构体变量,分别通过.访问(变量名访问)和->访问(指针访问)来介绍结构体变量和结构体数组的赋值和访问。
#include<iostream>
#include<string >
using namespace std;
struct student
{
string name;
int age;
};
int main() {
//创建变量时候赋初值(要按照顺序依次赋)
student s1[3] =
{
{"李 四",24},
{"张 三",21 },
{"王 五",25}
};
//创建后通过.来访问元素并且赋初值
student s2;
s2.age = 100;
s2.name = "老妖怪";
//p1指针指向结构体数组s1的首地址(数组名就是数组首地址)
student* p1 = s1;
//p2指针指向结构体s2的地址(对于变量来说,要加&取地址符)
student* p2 = &s2;
//表头
cout << "姓名:\t" << "年龄:\t" << endl;
//1.数组访问结构体数组元素
for (int i = 0; i < 3; i++)
{
cout << s1[i].name <<"\t"<<s1[i].age<<"\t" << endl;
}
cout << endl;
//2.指针访问结构体数组元素
for (int i = 0; i < 3; i++)
{
cout << p1->name << "\t" << p1->age << "\t" << endl;
p1++;
}
cout << endl;
//3.指针访问结构体元素
cout << p2->name << "\t" << p2->age << "\t" << endl;
//3.1用指针修改s2的元素后再访问
p2->name = "老妖精";
p2->age = 1000;
cout << p2->name << "\t" << p2->age << "\t" << endl;
system("pause");
return 0;
}
运行结果: