zoukankan      html  css  js  c++  java
  • 【C++】结构体/结构体数组/结构体指针/结构体嵌套/函数参数/const

    一、结构体声明

    struct Student
    {
          //成员列表
          string name;
          int age;
          int score;
    }; //s3;定义时直接声明
    
    int main()
    {
          struct Student s1;
    //法一、直接赋值
          s1.name = "Apple";
          s1.age = 10;
    //法二、直接声明
          struct Student s2 = {"Banana", 19, 80}; //不可跳着声明
    }
    
    

    二、结构体数组
    //创建结构体数组

    int main()
    {
          struct Student stuArray[3] = 
          {
                {"Apple", 19, 80},
                {"Banana", 18, 99},
                {"Cat", 17, 70}
          }; //注意逗号,分号的位置
    }
    

    //给结构数组中赋值

    int main()
    {
        struct Student stuArray[3] = 
        {
            {"Apple", 19, 80},
            {"Banana", 18, 99},
            {"Cat", 17, 70}
        };
        
        stuArray[0].name = "Dog";
    
        cout << stuArray[0].name << stuArray[0].score <<endl;
        system("pause");
    }
    

    //遍历结构体数组:for循环

    三、结构体指针

    int main()
    {
        struct Student stuArray[3] = 
        {
            {"Apple", 19, 80},
            {"Banana", 18, 99},
            {"Cat", 17, 70}
        };
        
        stuArray[0].name = "Dog";
    
        cout << stuArray[0].name << stuArray[0].score <<endl;
    
        //结构体指针
        Student* p = &stuArray[0]; //定义
        int a = p -> score; //访问 ->
        cout << a <<endl;
        system("pause");
    }
    

    四、结构体嵌套结构体

    struct Student
    {
          //成员列表
          string name;
          int age;
          int score;
    }; 
    
    struct Teacher
    {
        int id;
        string name;
        int age;
        struct Student stu;
    };
    

    五、结构体作为函数参数
    结构体作为函数参数有值传递和地址传递两种。

    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    struct Student
    {
          //成员列表
          string name;
          int age;
          int score;
    }; 
    
    //值传递
    void printStudent(struct Student s)
    {
        s.name = "Banana";
        cout << "name: " << s.name << "age: " << s.age << "score: " << s.score <<endl;
    }
    
    //地址传递
    void printStudent2(struct Student* p)
    {
        //p->name = "Banana";
        cout << "name: " << p->name << "age: " << p->age << "score: " << p->score << endl;
    }
    
    int main()
    {
        struct Student s;
        s = {"Apple", 20, 89};
        printStudent(s);
        struct Student* p = &s;
        printStudent2(p);
        cout << "name: " << p->name << "age: " << p->age << "score: " << p->score << endl;
        system("pause");
    }
    

    六、结构体中使用const场景
    用于防止误操作。
    因为值传递浪费空间,所以一般使用地址传递。
    如果函数使用了地址传递,函数内操作会改变实参值,为了防止实参被乱修改,使用const。


    用于设置只能读不能写。

  • 相关阅读:
    Python 存储引擎 数据类型 主键
    Python 数据库
    Python 线程池进程池 异步回调 协程 IO模型
    Python GIL锁 死锁 递归锁 event事件 信号量
    Python 进程间通信 线程
    Python 计算机发展史 多道技术 进程 守护进程 孤儿和僵尸进程 互斥锁
    Python 异常及处理 文件上传事例 UDP socketserver模块
    Python socket 粘包问题 报头
    Django基础,Day7
    Django基础,Day6
  • 原文地址:https://www.cnblogs.com/kinologic/p/13994560.html
Copyright © 2011-2022 走看看