0
点赞
收藏
分享

微信扫一扫

C++语言基础:结构体

往复随安_5bb5 2022-05-04 阅读 85
  • 8.1 结构体基本概念
    • 结构是是用户自定义的数据类型,运行用户存储不同的数据类型
  • 8.2 结构体定义和使用
    • 语法:struct 结构体名{ 结构体成员列表 };
    • 通过结构体创建变量的方式有三种:
      • 1. struct 结构体名 变量名
      • 2. struct 结构体名 变量名 = { 成员1值,成员2值... }
      • 3. 结构体创建的时候顺便创建变量
    • 示例:
      • ​
        // 1. 创建结构体Student,自定义数据类型
        struct Student
        {
            // 成员列表
            string name;
            int age;
            int score;
        }s3; //2.3. 结构体创建的时候顺便创建变量
        
        int main() {
            // 2. 通过结构体创建变量的方式有三种:
            //2.1. struct 结构体名 变量名
            struct Student s1; // 使用结构体的时候,struct关键字可以省略
            s1.name = "张三";
            s1.age = 18;
            s1.score = 100;
            cout << " 姓名: " << s1.name << " 年龄: " << s1.age << " 分数: " << s1.score << endl;
            //2.2. struct 结构体名 变量名 = { 成员1值,成员2值... }
            struct Student s2 = {"李四", 19, 98};
            cout << " 姓名: " << s2.name << " 年龄: " << s2.age << " 分数: " << s2.score << endl;
            //2.3. 结构体创建的时候顺便创建变量
            s3.name = "王五";
            s3.age = 20;
            s3.score = 66;
            cout << " 姓名: " << s3.name << " 年龄: " << s3.age << " 分数: " << s3.score << endl;
        }
        ​

  • 8.3 结构体数组
    • 作用:将自定义的结构体放入到数组中方便维护
    • 语法: struct 结构体名 数组名[ 元素个数 ] = { {}, {}, ... {} }
    • 示例
      • // 1. 创建结构体Student,自定义数据类型
        struct Student
        {
            // 成员列表
            string name; // 姓名
            int age; // 年龄
            int score; // 分数
        };
        
        int main() {
            struct Student arr[3] = {
                {"张三", 18, 60},
                {"李四", 19, 98},
                {"王五", 40, 60}
            };
            for (int i = 0; i < 3; i++) {
                cout << " 姓名: " << arr[i].name << " 年龄: " << arr[i].age << " 分数: " << arr[i].score << endl;
            }
        }

  • 8.4 结构体指针
    • 作用:通过指针访问结构体中的成员
    • 利用操作符 -> 可以通过结构体指针访问结构体属性
    • 步骤
      • 1. 创建结构体变量
      • 2. 通过指针指向结构体变量
      • 3. 通过指针访问结构体变量中的数据
    • 示例
      • // 1. 创建结构体Student,自定义数据类型
        struct Student
        {
            // 成员列表
            string name; // 姓名
            int age; // 年龄
            int score; // 分数
        };
        int main() {
            //1. 创建结构体变量
            struct Student s = {"zhangsan", 18, 78};
            //2. 通过指针指向结构体变量
            struct Student* p = &s;
            //3. 通过指针访问结构体变量中的数据
            cout << " 姓名: " << p->name << " 年龄: " << p->age << " 分数: " << p->score << endl;
            cout << " 结构体指针的大小: " << sizeof(p) << endl; // 4
        }

  • 8.5 结构体嵌套结构体
    • 作用: 结构体中的成员可以使另一个结构体
    • 例如:每一个老师辅导一个学生,一个老师的结构体中记录一个学生的结构体
    • 示例
      • ​
        // Student结构体
        struct student
        {
            // 成员列表
            string name; // 姓名
            int age; // 年龄
            int score; // 分数
        };
        
        // teacher 结构体
        struct teacher
        {
            // 成员列表
            int id; // 教师编号
            string name; // 教师姓名
            int age; // 教师年龄
            struct student stu; // 子结构体 学生
        };
        
        int main() {
            teacher t;
            t.id = 10000;
            t.name = "王老师";
            t.age = 40;
            t.stu.name = "张三";
            t.stu.age = 10;
            t.stu.score = 98;
            cout << " 老师ID: " << t.id << " 老师名字: " << t.name << " 老师年龄: " << t.age << endl;
            cout << " 学生姓名: " << t.stu.name << " 学生年龄: " << t.stu.age << " 学生分数: " << t.stu.score << endl;
        }
        ​

  • 8.6 结构体做函数参数
    • 作用:将结构体作为参数向函数中传递
    • 传递方式有两种:
      • 1. 值传递
      • 2. 地址传递
    • 示例
      • // Student结构体
        struct student
        {
            // 成员列表
            string name; // 姓名
            int age; // 年龄
            int score; // 分数
        };
        
        void printStudent1(struct student s) { // 值传递
            cout << "子函数1 姓名: " << s.name << " 学生年龄: " << s.age << " 学生分数: " << s.score << endl;
        }
        
        void printStudent2(struct student *s) { // 引用传递
            cout << "子函数2 姓名: " << s->name << " 学生年龄: " << s->age << " 学生分数: " << s->score << endl;
        }
        
        int main() {
            student s = { "zhangsan", 18, 80 };
            printStudent1(s);
            printStudent2(&s);
        }

  • 8.7 结构体中 const 使用场景
    • 作用:const防止误操作
    • 示例
      • // Student结构体
        struct student
        {
            // 成员列表
            string name; // 姓名
            int age; // 年龄
            int score; // 分数
        };
        
        // 将函数的形参改为指针,可以减少内存空间,而且不会复制一个副本
        // 指针只占四字节
        void printStudent(const student *s) {
            //s->score = 100; // 加入const之后,不可以修改
            cout << "子函数2 姓名: " << s->name << " 学生年龄: " << s->age << " 学生分数: " << s->score << endl;
        }
        
        int main() {
            student s = { "zhangsan", 18, 80 };
            printStudent(&s);
        }

  • 8.8 结构体案例
举报

相关推荐

0 条评论