跳转至

其他

结构体的指针

此处,或出现在初赛中,平时写代码,较少出现。

#include <iostream>

using namespace std;

struct stu{
    string name;
    int id;
    int chinese, math;
};

int main()
{
    stu A = {"xiaoming", 1001, 90, 95};

    stu *p = &A;  // 定义一个指针
    cout << p->name << ' ' << p->id << '\n';  // 通过->访问成员变量

    return 0;
}

img

联合体

联合体 union 是一种构造类型的数据结构,在一个联合体中可以定义多种不同的数据类型,和结构体相似。

union Data {
    int num;
    float value;
    char symbol;
};
union Data data;

联合体变量可以存入其定义的任何一种数据类型,各成员变量共享一段内存空间,即每次只能赋一种值,赋入新值则覆盖旧值。一个联合体变量占用的空间等于各成员中最大的变量所占用的空间。

结构体和联合体的区别在于:

  • 结构体(struct)中所有变量是“共存”的——优点是“有容乃大”,全面;
  • 缺点是struct内存空间的分配是粗放的,不管用不用,全分配。
  • 而联合体(union)中是各变量是“互斥”的——缺点就是不够“包容”;
  • 但优点是内存使用更为精细灵活,也节省了内存空间。

题单

病人排队 - Virtual Judge

1938:【07NOIP普及组】奖学金

1946:【09NOIP普及组】分数线划定

参考

结构体 - OI Wiki

C++ struct与class-阿里云开发者社区

C++ 结构体(struct)最全详解 - 一杯清酒邀明月 - 博客园

C++ - 结构体构造函数使用总结

https://fuhailin.github.io/C-CPP-Structer/

C++何时调用构造函数,何时调用析构函数_构造函数和析构函数的调用时机是什么?通常情况下构造函数的作用是什么?-CSDN博客

Struct and union initialization

struct (C++)

构造函数 (C++)

《信息学奥林匹克词典》

《算法竞赛入门经典(第2版)》

union https://learn.microsoft.com/zh-cn/cpp/cpp/unions?view=msvc-170

C语言union的用法及好处 https://blog.csdn.net/rchris520/article/details/109232732