结构体可以组织不同的数据类型,使形成一个集合体,便于使用与管理。
代码使用演示:
#include <iostream>
#include<string>
using namespace std;
//定义结构体student,并定义两个结构体变量student1,student2
struct student{
string name;
int age;
int number;
string hobby;
}student1,student2;
//可以把结构体作为参数使用
void studentInfo(struct student stu);
//只输出学生信息
void studentInfo(struct student stu){
cout<<"学生的信息:"<<stu.name<<","<<stu.age<<","<<stu.number<<","<<stu.hobby<<endl;
}
//可以给结构体重新定义一个名字,然后在使用结构体时其类型就为重定义的名字STU
typedef struct {
string name;
int age;
int number;
string hobby;
}STU;
int main() {
//给结构体赋值
student1.name="张三";
student1.age=22;
student1.number=123;
student1.hobby="羽毛球";
student2.name="李名";
student2.age=19;
student2.number=22;
student2.hobby="篮球";
//访问结构体元素
cout<<"学生student1的信息:"<<student1.name<<","<<student1.age<<","<<student1.number<<","<<student1.hobby<<endl;
cout<<"学生student2的信息:"<<student2.name<<","<<student2.age<<","<<student2.number<<","<<student2.hobby<<endl;
//在创建一个结构体变量student3
struct student student3;
student3.name="王星";
student3.age=34;
student3.number=21;
student3.hobby="编程";
//输出信息
cout<<"学生student3的信息:"<<student3.name<<","<<student3.age<<","<<student3.number<<","<<student3.hobby<<endl;
//把结构体作为参数传递给函数,传入的结构体需要提前初始化并赋值,否则结构体的值将是编译器给的默认值
studentInfo(student1);
studentInfo(student2);
studentInfo(student3);
//使用结构体指针,这里相当于新建了一个结构体对象
struct student *stu4=new student;
stu4->name="库克";
stu4->age=23;
stu4->number=33;
stu4->hobby="研究高科技";
//输出结构体信息
cout<<"stu4的信息为:"<<stu4->name<<","<<stu4->age<<","<<stu4->number<<","<<stu4->hobby<<endl;
//使用结构体的另一种方式是获取现有结构体变量的地址
struct student *stu5=&student3;
cout<<"stu5的信息为:"<<stu5->name<<","<<stu5->age<<","<<stu5->number<<","<<stu5->hobby<<endl;
//结构体可以相互直接赋值
struct student stu6=student3;
cout<<"学生stu6的信息:"<<stu6.name<<","<<stu6.age<<","<<stu6.number<<","<<stu6.hobby<<endl;
//使用头部定义的结构体的别名来使用结构体,STU相当于 Struct STU STU ;
STU stu7;
stu7.name="王星";
stu7.age=34;
stu7.number=21;
stu7.hobby="编程";
//输出信息
cout<<"学生student3的信息:"<<stu7.name<<","<<stu7.age<<","<<stu7.number<<","<<stu7.hobby<<endl;
std::cout << "Hello, World!" << std::endl;
return 0;
}