结构体

简介: 结构体

1.结构体的创建

#include<iostream>
using namespace std;
struct student {
 string name;
 int age;
 int scores;
};
int main() {
 struct student stu;
 //struct student stu1 = { "laozhichi",18,100 };
 stu.name = "leizhou";
 cout << stu.name << endl;
 system("pause");
 return 0;
}


2.结构体数组

#include<iostream>
using namespace std;
struct student {
 string name;
 int age;
 string address;
};
int main() {
 struct student arr[3] = {
  {"laozhichi",19,"leizhou"},
  {"laozhicaho",21,"leizhou"},
  {"laozhilei",25,"leizhou"}
 };
 for (int i = 0; i < 3; i++) {
  cout << "name is" << arr[i].name <<"age is" << arr[i].age <<"address is" << arr[i].address << endl;
 }
 return 0;
}


3.结构体指针

#include<iostream>
using namespace std;
struct student {
 string name;
 int age;
 int scores;
};
int main() {
 struct student stu;
 struct student *p=&stu;
 p->name = "laozhichi";
 p->age = 18;
 p->scores = 100;
 cout << stu.name <<"      "<< stu.age <<"      " <<stu.scores << endl;
 system("pause");
 return 0;
}
 struct student arr[3] = {
  {"laozhichi",19,"leizhou"},
  {"laozhicaho",21,"leizhou"},
  {"laozhilei",25,"leizhou"}
 };
 struct student* p = &arr[0];
 p->age = 220;


4.结构体嵌套使用

//学生结构体定义
struct student
{
    //成员列表
    string name; //姓名
    int age; //年龄
    int score; //分数
};
//教师结构体定义
struct teacher
{
    //成员列表
    int id; //职工编号
    string name; //教师姓名
    int age; //教师年龄
    struct student stu; //子结构体 学生
};
int main() {
    struct teacher t1;
    t1.id = 10000;
    t1.name = "老王";
    t1.age = 40;
    t1.stu.name = "张三";
    t1.stu.age = 18;
    t1.stu.score = 100;
    cout << "教师 职工编号: " << t1.id << " 姓名: " << t1.name << " 年龄: " <<
        t1.age << endl;
    cout << "辅导学员 姓名: " << t1.stu.name << " 年龄:" << t1.stu.age << " 考试分
        数: " << t1.stu.score << endl;
        system("pause");
    return 0;
}



5.结构体作函数参数

#include<iostream>
using namespace std;
struct student {
    string name;
    int age;
    int scores;
};
//值传递
void printStudent1(student stu) {
    stu.age = 21;
    cout << "年龄是" << stu.age << "  " << "名字是" << "   " << stu.name << "   " << "分数是" << stu.scores << endl;
}
//地址传递
void printtudent2(student* stu) {
    stu->age = 23;
    cout << "年龄是" << stu->age << "  " << "名字是" << "   " << stu->name << "   " << "分数是" << stu->scores << endl;
}
int main() {
    struct student stu = {
        "laozhichi",20,98
        };
    printStudent1(stu);
    printtudent2(&stu);
    system("pause");
    return 0;
}



6.结构体当中const运用场景
加const防止函数体当中的误操作




7.结构体案例训练


案例描述: 设计一个英雄的结构体,包括成员姓名,年龄,性别;创建结构体数组,数组中存放5名英雄。 通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果。 五名英雄信息如下:  


{"刘备",23,"男"},
{"关羽",22,"男"},
{"张飞",20,"男"},
{"赵云",21,"男"},
{"貂蝉",19,"女"},

代码示例


#include<iostream>
using namespace std;
struct student {
  string name;
  int age;
  int scores;
};
void bubbleSort(student arr[], int length) {
  for (int i = 0; i < length - 1; i++)
  {
    for (int j = 0; j < length - 1 - i; j++)
    {
      if (arr[j].age > arr[j + 1].age)
      {
        student temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }
}
void printStudents(student arr[], int length) {
  for (int i = 0; i < length; i++)
  {
    cout << arr[i].age << "   " << arr[i].name << "   " << arr[i].scores << "   " << endl;
  }
}
int main() {
  struct student arr[5] = {
    {"刘备",23,120},
    {"关羽",22,135},
    {"张飞",20,139},
    {"赵云",21,140},
    {"貂蝉",19,149},
  };
  int length = sizeof(arr) / sizeof(student);
  bubbleSort(arr, length);
  printStudents(arr, length);
  system("pause");
  return 0;
}


相关文章
|
6月前
|
编译器 C++
详解结构体
详解结构体
41 1
|
5月前
初识结构体
初识结构体
42 5
|
5月前
|
存储 算法 C++
C++结构体
C++结构体
|
6月前
|
编译器 Linux C语言
结构体(详解)
结构体(详解)
57 1
|
编译器 C++
|
编译器
C#视频-结构体
C#视频-结构体
56 0
|
存储 编译器 C语言
C 中的结构体
C 中的结构体