自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 常见指令以及权限理解

本门课程学习Linux系统编程,你可能要问Linux从哪里来?它是怎么发展的?在这里简要介绍Linux的发展史。要说Linux,还得从UNIX说起。UNIX发展的历史1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念。

2025-05-31 00:06:24 911

原创 c++--多态

多态的构成条件:多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价。那么在继承中要构成多态还有两个条件:1. 必须通过基类的指针或者引用调用虚函数2. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写虚函数:即被virtual修饰的类成员函数称为虚函数public:virtual void BuyTicket() { cout << "买票-全价" << endl;

2025-05-29 09:00:00 1284

原创 Linux--环境的搭建(云服务器)

因为我买的腾讯云,所以给大家说腾讯云的,新用户有一个月试用期,另外两个平台都有,记得薅羊毛,不过阿里云后面不用了记得关,否则会持续计费。输入下方图片里的指令,zhu这个用户的密码就可以设置了(这里密码不会回显,敲了看不见)然后新增用户使用,这里pwd指令就是查看当前路径,命令先不说,后面再说。朋友把密码忘了,你也忘了,在root 路径下,给普通用户重置密码。和朋友吵架了,或者一起买,他不@钱了,咱不给它用了。基本搭建就是这样了,码字不易,求三连!买好以后 ,找到控制台,点击它。一定要选centOs7.6。

2025-05-24 20:27:23 467

原创 c++中的继承

派生类定义与基类同名的成员(变量/函数)时,会“遮挡”基类成员。以前我们接触的复用都是函数复用,继承是类涉及层次的复用。比喻:基类(父类)与派生类(子类)如两个房间,同名成员(如 name )是各自房间的独立物品,互不干扰。例:基类有 Show() 和 Show(int) ,派生类定义 Show() 后,基类两个函数均被隐藏。派生类对象 可以赋值给 基类的对象 / 基类的指针 / 基类的引用。6个默认成员函数,“默认”的意思就是指我们不写,编译器会变我们自动生成一个,那么在派生类。

2025-05-24 17:49:50 991

原创 c++-模板进阶

上述示例中,p1指向的d1显然小于p2指向的d2对象,但是Less内部并没有比较p1和p2指向的对象内容,而比较的是p1和p2指针的地址,这就无法达到预期而错误。通常情况下,使用模板可以实现一些与类型无关的代码,但对于一些特殊类型的可能会得到一些错误的结果,需要特殊处理,比如:实现了一个专门用来进行小于比较的函数模板。该种实现简单明了,代码的可读性高,容易书写,因为对于一些参数类型复杂的函数模板,特化时特别给出,因此函数模板不建议特化。即:在原模板类的基础上,针对特殊类型所进行特殊化的实现方式。

2025-05-14 00:51:15 597

原创 STL-stack和queue

2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。3. 优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。2. 队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。4. 底层容器可以是任何标准容器类模板,也可以是其他特定设计的容器类。

2025-05-11 21:14:18 650

原创 STL-list

5. 与其他序列式容器相比,list和forward_list最大的缺陷是不支持任意位置的随机访问,比如:要访问list的第6个元素,必须从已知的位置(比如头部或者尾部)迭代到该位置,在这段位置上迭代需要线性的时间开销;因为list的底层结构为带头结点的双向循环链表,因此在list中进行插入时是不会导致list的迭代器失效的,只有在删除时才会失效,并且失效的只是指向被删除节点的迭代器,其他迭代器不会受到影响。反向迭代器的++就是正向迭代器的--,反向迭代器的--就是正向迭代器的++,因此反向迭。

2025-05-10 23:02:34 987

原创 STL-vector

因此迭代器失效,实际就是迭代器底层对应指针所指向的空间被销毁了,而使用一块已经被释放的空间,造成的后果是程序崩溃(即如果继续使用已经失效的迭代器,程序可能会崩溃)。rase删除pos位置元素后,pos位置之后的元素会往前搬移,没有导致底层空间的改变,理论上讲迭代器不应该会失效,但是:如果pos刚好是最后一个元素,删完之后pos刚好是end的位置,而end位置是没有元素的,那么pos就失效了。但是无论如何,重新分配都应该是对数增长的间隔大小,以至于在末尾插入一个元素的时候是在常数时间的复杂度完成的。

2025-05-09 15:39:47 726

原创 数据结构-堆排序

如果每个节点的值都大于等于其子节点的值,这样的堆称为大根堆(大顶堆);对于Top-K问题,能想到的最简单直接的方式就是排序,但是:如果数据量非常大,排序就不太可取了(可能数据都不能一下子全部加载到内存中)。2. 用剩余的N-K个元素依次与堆顶元素来比较,不满足则替换堆顶元素将剩余N-K个元素依次与堆顶元素比完之后,堆中剩余的K个元素就是所求的前K个最小或者最大的元素。删除堆是删除堆顶的数据,将堆顶的数据根最后一个数据一换,然后删除数组最后一个数据,再进行向下调整算法。前k个最大的元素,则建小堆。

2025-05-08 16:56:29 423

原创 数据结构--二叉树

现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。而现实中使用中只有堆才会使用数组来存储,关于堆,前面有一篇文章有分享,二叉树顺序存储在物理上是一个数组,在逻辑上是一颗二叉树。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。四、二叉树的存储结构。

2025-05-07 23:22:23 962

原创 数据结构--树

内部节点(Internal Node): 至少有一个子节点的节点。- 祖先节点(Ancestor): 从根到该节点路径上的所有节点。- 后代节点(Descendant): 某节点子树中的所有节点。- 兄弟节点(Sibling): 具有相同父节点的节点。- 根节点(Root): 树的最顶层节点,没有父节点。- 父节点(Parent): 一个节点的直接上层节点。- 子节点(Child): 一个节点的直接下层节点。- 叶子节点(Leaf): 没有子节点的节点。- 边(Edge): 连接两个节点的线。

2025-05-07 21:58:51 489

原创 标准库组件-string

2.4 string类是basic_string模板类的一个实例,它使用char来实例化basic_string模板类,并用char_traits和allocator作为basic_string的默认参数(根于更多的模板信息请参考basic_string)。C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。2.1 字符串是表示字符序列的类。

2025-04-27 01:25:00 564

原创 C++ --- STL

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。:由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改,缺陷:可读性比较低,符号命名比较怪异。STL的使用会有代码膨胀的问题,比如使用vector/vector/vector这样会生成多份代码,当然这是模板语法本身导致的。简单总结一下:学习STL的三个境界:能用,明理,能扩展。

2025-04-27 00:46:51 310

原创 c++-模板

比如:当用double类型使用函数模板时,编译器通过对实参类型的推演,将T确定为double类型,然后产生一份专门处理double类型的代码,对于字符类型也是如此。如果在C++中,也能够存在这样一个模具,通过给这个模具中填充不同材料(类型),来获得不同材料的铸件(即生成具体类型的代码),那将会节省许多头发。巧的是前人早已将树栽好,我们只需在此乘凉。类模板实例化与函数模板实例化不同,类模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<>中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。

2025-04-26 11:27:38 388

原创 搜索二叉树-key的搜索模型

std::cout << "[正确] \"" << input << "\" 存在于词典中\n\n";std::cout << "===== 单词拼写检查系统 =====" << std::endl;std::cout << "\n===== 水果统计结果 =====\n";- 节点的键值必须满足二叉搜索树的性质:左子节点的键值小于父节点,右子节点的键值大于父节点。<< "\" 未在词典中找到,请注意拼写!

2025-04-26 00:11:53 803

原创 动态内存管理

C++ 语言中的 new 运算符在内存分配失败时会抛出 bad_alloc 异常,通过异常处理机制来处理错误情况。C++ 语言则可以通过重载 operator new 和 operator delete 函数来实现自定义的内存管理策略,更加灵活方便。C++ 语言在使用 new 分配内存时会自动调用构造函数,使用 delete 释放内存时会自动调用析构函数。2. 内存释放:在 C 语言中,使用 free 函数来释放之前分配的内存;2. delete:调用析构函数并释放内存。

2025-04-24 20:37:30 449

原创 c++内存分布

内存占用:仅包含非static成员变量(本例中sizeof(Example) == sizeof(int))static int localStatic = 2;// "Hello"在常量区。// .bss段(初始化为0)// 可能存储在常量区。// 不占对象空间(在全局区)void func() {} // 不占对象空间(在代码区)// 数组存储在栈上。2. 堆区(Heap)/自由存储区(Free Store)

2025-04-24 20:24:15 425

原创 c++——内部类

内部类的访问权限可访问外部类所有成员(需通过对象) ,而外部类只能访问内部类的public成员。内部类的生命周期完全独立,外部类与内部类是包含关系,但不影响生命周期。内部类可以使用外部类的模板参数,外部类不能使用内部类的模板参数。内部类可以使用外部类的类型别名,外部类可以使用内部类的public类型别名。内部类(也称为嵌套类)是在另一个类内部定义的类,是C++中实现强封装和逻辑分组的重要机制。2. 访问控制:合理使用public/protected/private控制内部类的可见性。// 实现细节...

2025-04-24 20:12:26 320

原创 static成员

static 成员是类中特殊的成员,它们与类本身关联,而不是与类的各个对象实例关联。static 成员分为 static 成员变量和 static 成员函数。- 类内常量:C++11 允许 static const 成员在类内初始化。- static 局部变量(在函数内)的初始化是线程安全的(C++11起)- 非 const static 成员:必须在类外定义和初始化。- 类范围共享:所有类对象共享同一个 static 成员变量。// 定义和初始化(类外,通常在.cpp文件中)

2025-04-24 20:04:45 396

原创 构造函数体赋值和初始化列表

在C++中,对象的初始化可以通过两种方式完成:构造函数体内的赋值和使用成员初始化列表。Example(int x) : b(x), a(b) {} // 危险!: id(sid), // const成员必须初始化。ageRef(age), // 引用必须初始化。scores{0,0,0} // 数组初始化。name(n), // 直接初始化,效率高。// const成员。: Base(a), // 基类初始化。s(str) // 成员变量初始化。x(a), // 成员变量初始化。

2025-04-24 19:55:36 534

原创 类的六个默认成员函数

在C++中,我们可以重载取地址运算符( operator& )来定制对象地址获取行为,这在某些特殊场景下非常有用。} // 返回指针的地址。explicit ExplicitDemo(int x) : val(x) {} // 必须显式调用。const成员是指被 const 关键字修饰的类成员,包括const成员变量和const成员函数。

2025-04-24 19:37:38 987

原创 二叉搜索树

高效操作:平均时间复杂度为 O(log n),但若树退化为链表(如输入有序数据),时间复杂度退化为 O(n)。- 步骤:从根节点开始,若目标值小于当前节点值则向左子树搜索,否则向右子树搜索,直到找到目标或遍历到空节点。2. 否则,按查找逻辑定位插入位置,将新节点链接到父节点的左或右子树。1. 找到右子树的最小节点(或左子树的最大节点)作为替换节点;通常包含键值、左/右子节点指针。- 叶子节点:直接删除,父节点对应指针置空。- 左子树所有节点的值均小于根节点的值;- 右子树所有节点的值均大于根节点的值;

2025-04-23 23:39:27 548

原创 c++类和对象——this指针

在C++中,不仅可以对基本数据类型的函数进行重载,也可以对自定义类型(比如类)进行函数重载。常见的有对成员函数重载,以及对一些操作符重载(这也属于函数重载的一种特殊形式)。this 指针是一个隐含在类的成员函数中的指针,它指向调用该成员函数的对象。在成员函数内部,可以使用 this 指针来访问对象的成员变量和其他成员函数。2. 重载了 print 成员函数,一个无参的用于输出当前分数对象的分子分母,另一个带参数的可以输出指定的分子分母。f1.print();// 重载成员函数,根据传入的参数改变分子分母。

2025-04-10 20:26:53 348

原创 c++——内联函数和auto关键字

1. 推导复杂表达式类型:对于更复杂的表达式,如 decltype(a + b) ,如果 a 和 b 都是 int 类型,那么 decltype(a + b) 的类型就是 int。- 提高执行效率:由于函数调用会有一定的开销,如保存现场、传递参数、跳转等,内联函数将函数体直接嵌入调用处,避免了这些开销,从而提高了程序的执行效率。- 代码可读性好:在调用内联函数的地方,代码看起来就像直接写了函数体的代码一样,使代码更易理解,尤其是对于一些简短的函数。(it——迭代器部分会说)

2025-04-10 20:14:01 302

原创 c++——引用

对引用的操作,如赋值、取地址等,实际上都是通过这个隐藏的指针来操作被引用的变量。在使用引用时,不需要像使用指针那样显式地解引用,编译器会自动完成这些操作,使得引用在语法上更像是变量的别名,使用起来更加方便和安全。- 与原变量等价:引用和它所引用的变量在内存中具有相同的地址,对引用的操作等同于对原变量的操作。- 引用:必须在定义时初始化,且之后不能再引用其他变量,如 int num = 10;- 作为函数返回值:可以将引用作为函数的返回值,这样可以返回一个变量的引用,而不是返回变量的副本。

2025-04-10 19:52:26 353

原创 c++的函数重载

例如,对于函数 int add(int a, int b) 和 float add(float a, float b) ,编译器可能会将它们修饰为类似 _Z3addii 和 _Z3addff 的形式,其中 _Z 是常见的前缀, 3 表示函数名 add 的长度,后面的 ii 和 ff 分别表示参数类型为 int 和 float。在上述代码中,定义了三个名为 add 的函数,它们的参数类型和个数不同,通过函数重载,实现了根据不同的参数来执行不同的加法操作。

2025-04-10 19:42:11 396

原创 c++入门

但在C++里,这样的定义容易引发一些类型不匹配等混淆情况,例如在函数重载场景中,如果有一个函数接受指针参数,另一个接受整型参数,传入 NULL 时就可能出现意外的调用结果。- 与宏的区别:虽然内联函数和宏( #define 定义的宏)在某些方面有相似之处,比如都可以让代码看起来像是直接嵌入的,但内联函数是真正的函数,遵循函数的语法规则,有类型检查等机制,而宏只是简单的文本替换,容易出现一些意想不到的错误(如没有类型检查、宏展开可能导致的优先级问题等),内联函数相对更安全、规范。

2024-11-29 23:12:21 1034

原创 堆(c语言实现)

没有子节点的节点称为叶节点(leaf node)。这意味着除了最后一层外,其他每一层的节点都是满的,并且最后一层的节点从左到右依次排列。即根节点是整个堆中的最大值,并且沿着任意一条从根节点到叶节点的路径,节点的值都是递减的。即根节点是整个堆中的最小值,并且沿着任意一条从根节点到叶节点的路径,节点的值都是递增的。2. 二叉搜索树:左子树中的所有节点的值都小于根节点的值,右子树中的所有节点的值都大于根节点的值。1. 文件系统:文件系统中的目录结构可以用树来表示,根目录是树的根节点,子目录和文件是树的节点。

2024-10-28 10:22:25 365

原创 队列(c语言实现)

1. 先进先出(FIFO,First In First Out):就像排队买东西一样,先进入队列的元素先被处理。1. 任务调度:操作系统中可以用队列来管理等待执行的任务,按照任务到达的先后顺序进行处理。3. 广度优先搜索:在图的遍历算法中,用队列来存储待访问的节点,实现广度优先搜索。2. 消息队列:在分布式系统中,用于在不同组件之间传递消息,保证消息的有序处理。3. 查看队首元素(peek):获取队首元素的值,但不删除它。2. 只允许在队尾插入元素,在队首删除元素。四、队列实现(vs2019)

2024-10-26 16:47:34 263

原创 《C++求解地球可持续发展下的最大养活人数问题》

今天刷题时,引发了我的思考,在我们的日常生活中,资源的可持续利用是一个至关重要的问题。今天我们来探讨一个有趣的问题:假设地球上的新生资源按恒定速度增长,地球上现有资源加上新生资源可供一定数量的人生活特定的年数,那么为了实现可持续发展,地球最多能够养活多少亿人呢?后面又想到了,如果需要可持续发展,那每年地球新产生的资源就要大于等于人类消耗的资源,如果动用了原始资源,那就会每年多消耗一点,导致枯竭。所以原始资源是万万不能动用的。所以我得到了每年地球增长的资源=Z亿人的消耗的资源,就有了下图Z存在图中关系。

2024-10-26 00:07:16 256

原创 栈(c语言实现)

这是我的gitee账号链接,上面可能有大家需要的源码,需要自取。如果大家想自己也实现一下的话,我用的是编译器是vs2019。

2024-10-23 08:38:40 946

原创 双向循环带头链表

带头链表是指在链表的最前端有一个额外的节点(头节点),这个头节点不存储实际的数据,主要用于方便链表的操作,比如在表头插入或删除节点时不用特殊处理空链表的情况。双向链表是指链表中的每个节点不仅存储了下一个节点的位置(后继指针),还存储了前一个节点的位置(前驱指针)。这使得从链表的任何一个节点开始,既可以向前遍历,也可以向后遍历。双向循环链表是双向链表的一种特殊形式,它的最后一个节点的后继指针指向头节点,头节点的前驱指针指向最后一个节点,形成一个环形结构。

2024-10-23 08:12:31 927

原创 深入理解程序的编译(预处理操作)和链接

总之,程序的编译(预处理操作)和链接是一个复杂而又精细的过程,每个阶段都承担着特定的任务,共同协作将我们编写的源代码转化为能够在计算机上运行的可执行程序。- 定义宏函数: #define SQUARE(x) ((x) * (x)) ,可以实现类似函数的功能,但宏只是简单的文本替换,不会进行类型检查和参数传递等操作。链接器会将程序中使用到的库函数的代码合并到最终的可执行文件中。- 链接器会查找目标文件中引用的外部符号(如函数和变量),并在其他目标文件或库中找到它们的定义,建立正确的引用关系。

2024-10-20 22:51:03 352

原创 单链表(c语言简单实现)

2. 插入和删除操作高效:在特定位置进行插入和删除操作时,只需修改指针,时间复杂度为 O(1)(在头部或尾部插入/删除)或 O(n)(在特定位置插入/删除,n 为链表长度)。- 特定位置插入:先找到目标位置的前一个节点,然后进行插入操作个节点,然后进行插入操作。- 头部插入:操作简单,只需将新节点的指针指向原链表的头节点,然后更新链表头指针。- 首先找到要删除节点的前一个节点,然后将其指针指向要删除节点的下一个节点。1. 插入节点:可以在链表的头部、尾部或特定位置插入新节点。单链表是一种常见的数据结构。

2024-09-20 20:56:58 358

原创 顺序表(c语言实现)

3. 插入和删除操作可能比较耗时:在中间位置插入或删除元素时,需要移动大量后续元素以保持连续性。1. 随机访问:可以在常数时间内访问特定位置的元素,例如,通过下标可以快速找到对应元素。通常使用数组来实现顺序表。2. 当数据规模相对稳定,且不需要频繁进行插入和删除操作时,顺序表是一种高效的选择。2. 存储密度高:不需要额外的指针来链接元素,所有空间都用于存储数据本身。顺序表是一种数据结构,它在计算机内存中以连续的存储位置来存储数据元素。1. 适合频繁进行随机访问的情况,如查找特定位置的元素。

2024-09-16 23:22:29 292

原创 算法的时间复杂度和空间复杂度

对数时间复杂度 O(log n):算法执行的时间与输入数据的大小呈对数关系。例如,二分查找算法。- 线性时间复杂度 O(n):算法执行的时间与输入数据的大小呈线性关系。例如,遍历一个数组。- 线性对数时间复杂度 O(n log n):常见于一些高效的排序算法,如快速排序和归并排序。- 平方时间复杂度 O(n²):算法执行的时间与输入数据的大小的平方呈正比关系。例如,冒泡排序算法。- 立方时间复杂度 O(n³)及更高:算法执行的时间与输入数据的大小的立方或更高次方呈正比关系。

2024-09-09 07:22:53 479

原创 数据结构的简单认识

在设计算法时,需要考虑算法的时间复杂度和空间复杂度,以确保算法的效率和可行性。不同的数据结构具有不同的特性和操作方式,为算法提供了不同的存储和组织数据的方式。例如,在排序算法中,如果对大量数据进行排序,选择合适的数据结构(如数组或链表)以及相应的排序算法(如快速排序、归并排序等)可以大大提高排序的效率。例如,在图的最短路径问题中,需要使用图这种数据结构来表示问题中的节点和边的关系,然后采用合适的算法(如 Dijkstra 算法或 Floyd 算法)来求解最短路径。反过来,算法的需求也推动了数据结构的发展。

2024-09-04 15:17:01 710

原创 c语言中文件操作和相关函数

在计算机领域,文件是存储在某种存储介质(如硬盘、闪存等)上的具有名称的一组相关数据的集合。一、文件的组成部分1. 数据内容- 文件包含实际的信息,可以是文本、图像、音频、视频、程序代码等各种形式的数据。- 例如,一个文本文件可能包含一篇文章、一份报告或一段程序代码;一个图像文件则包含像素数据,用于表示图像的颜色和形状。2. 文件名- 用于唯一标识一个文件。文件名通常由字母、数字、下划线和其他特殊字符组成,但不能包含某些特殊字符(如斜杠、反斜杠、冒号等)。

2024-09-03 22:46:42 1246 1

原创 c语言中的动态内存管理

功能: calloc 函数用于在内存的动态存储区中分配 n 个长度为 size 字节的连续区域,并将分配的内存初始化为 0。它接受一个参数 ptr ,这是一个指向要释放的内存块的指针。1. 确保只释放已分配的内存:传递给 free 的指针必须是由动态内存分配函数返回的有效指针,否则可能会导致未定义的行为。- 表现:申请了动态内存但没有在合适的时候释放,导致内存资源一直被占用,随着程序的运行,可能会耗尽系统。表现:指针指向的内存被释放后,指针没有被置为 NULL 或重新赋值,继续使用该指针会导致未定义行为。

2024-09-02 11:02:17 919

原创 c语言中自定义类型

在这个联合体中,如果 int 通常占用 4 个字节, float 通常占用 4个字节,而 char 占用 1 个字节,那么这个联合体的大小将是 4 个字节,因为 float/int 是其中最大的成员类型。4. 如果嵌套了结构体,嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体中成员的对齐数)的整数倍。在 C 语言中,联合体(union)是一种特殊的数据类型,它允许在同一内存空间存储不同的数据类型,但在同一时刻只能存储其中一种类型的值。

2024-09-01 22:10:19 1160

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除