C++ 结构体

2020-03-16  本文已影响0人  小潤澤

结构体简介

结构体是拥护自定义的数据类型,允许用户储存不同的数据类型

语法:struct 结构体名{结构体成员列表};

结构体创建变量的方式
1.struct结构体名 变量名
2.struct结构体名 变量名={成员1值,成员2值}
3.定义结构体时顺便创建变量

定义结构体

#include<iostream>
using namespace std;
#include<string>

struct Student
{
    //成员列表
   //姓名
    string name;
   //年龄
    int age;
   //分数
    int score;
};

int main(){
  //创建具体学生
  //方法一
  struct Student s1;
  //通过.来访问
  s1.name = "张三";
  s1.age = 18;
  s1.score =   100;

  cout<<"姓名:  "<<s1.name<<"年龄:  "<<s1.age<<"分数:  "<<s1.score<<end1;
  
  //方法二
  struct Student s2 = { "李四" ,19 , 80 };
  cout<<"姓名:  "<<s2.name<<"年龄:  "<<s2.age<<"分数:  "<<s2.score<<end1;

system("pause");
  return 0;
}

那么第三种穿件结构体的方法是

#include<iostream>
using namespace std;
#include<string>

struct Student
{
    //成员列表
   //姓名
    string name;
   //年龄
    int age;
   //分数
    int score;
}s3;

int main(){
  //创建具体学生
  //方法三
  s3.name = "王五";
  s3.age = 20;
  s3.score = 60;

  cout<<"姓名:  "<<s3.name<<"年龄:  "<<s3.age<<"分数:  "<<s3.score<<end1;
  
system("pause");
  return 0;
}

在定义结构体的时候顺便建立属性

结构体数组

结构体的数组的作用是将自定义结构体放到数组里面做存储

#include<iostream>
using namespace std;
#include<string>

//定义结构体
struct Student
{
    //成员列表
   //姓名
    string name;
   //年龄
    int age;
   //分数
    int score;
};

int main(){
  //创建结构体数组
  struct Student stuArray[3] = 
  {
      {"张三" ,18 , 100},
      {"李四" ,28 , 99},
      {"王五" , 38 , 66}
  };
    //赋值
    stuArray[2].name = "赵六";
    stuArray[2].age = 80;
    stuArray[2].score = 60;
  
  //遍历结构体数组 
    for (int i = 0; i < 3;i++)
   {
       cout<<"姓名:  "<<stuArray[i].name
           <<"年龄:  "<<stuArray[i].age
           <<"分数:  "<<stuArray[i].score<<end1;
   }
    
  system("pause");
  return 0;
}

结构体指针

通过指针访问结构体成员

#include<iostream>
using namespace std;
#include<string>

//定义结构体
struct Student
{
    //成员列表
   //姓名
    string name;
   //年龄
    int age;
   //分数
    int score;
};

int main(){
    struct Student s = {"张三" , 18, 100 };
    //通过指针只想结构体变量
    Student *p = &s;
   //通过指针访问结构体变量内的数据
    cout<<"姓名: "<<p->name<<"年龄: "<<p->age<<"分数: "<<p->score<<end1;

   system("pause");
   return 0;
}

结构体嵌套

即结构体成员是另一个结构体

#include<iostream>
using namespace std;
#include<string>

//定义结构体
struct student
{
    //成员列表
   //姓名
    string name;
   //年龄
    int age;
   //分数
    int score;
};

struct teacher
{
    //成员列表
   //姓名
    int id;
   //年龄
    string name;
   //分数
    int age;
   //辅导的学生
    struct student stu;
};

int main(){
   teacher t;
   t.id = 10000;
   t.name = "老王";
   t.age = 50;
   t.stu.name = "小王";
   t.stu.age = 20;
   t.stu.score = 60;
   
   cout<<"老师姓名: "<<t.name<<"老师编号: "<<t.id<,"老师年龄: "<<t.age<<"老师的辅导学生姓名: "<<t.stu.name<<"学生年龄: "<<t.stu.age<<"学生考试分数为: "<<t.stu.score;

system("pause");
   return 0;
}

结构体做函数参数

作用是结构体作为参数向函数传递

我们首先看下值传递

#include<iostream>
using namespace std;
#include<string>

struct student
{
    //成员列表
   //姓名
    string name;
   //年龄
    int age;
   //分数
    int score;
};

void printStudent1(struct student s)
 {
     cout<<"子函数1姓名:  "<<s.name<<"年龄:  "<<s.age<<"分数:  "<<s.score<<end1;
 }
int main(){
  //创建具体学生
  struct student s;
  s.name = "张三";
  s.age = 20;
  s.score = 85;

  printStudent1(s);
  
system("pause");
  return 0;
}

地址传递

#include<iostream>
using namespace std;
#include<string>

struct student
{
    //成员列表
   //姓名
    string name;
   //年龄
    int age;
   //分数
    int score;
};

void printStudent2(struct student *p)
 {
     cout<<"子函数2姓名:  "<<p->name<<"年龄:  "<<p->age<<"分数:  "<<p->score<<end1;
 }

int main(){
  //创建具体学生
  struct student s;
  s.name = "张三";
  s.age = 20;
  s.score = 85;

  printStudent2(&s);
  
system("pause");
  return 0;

我们可以通过void printStudent2(const student p)来防止误操作

上一篇下一篇

猜你喜欢

热点阅读