首页 > 编程语言 >c++结构体、共用体(联合体)

c++结构体、共用体(联合体)

时间:2024-04-13 14:22:05浏览次数:22  
标签:struct union 成员 联合体 c++ char 内存 共用 100

union

数据成员共享同一段内存,在使用时按照最大成员变量的大小开辟空间,相对struct比较是节省内存的。

内存空间是以占内存最大的以准。

 

struct

数据成员各占一段内存,在使用时按照各自成员变量的大小开辟空间。

 

如图:一个学生(姓名name char[10],年龄 old short,电话 tel char[11], 地址 addr[100])

struct: 会开辟 char[10]+short+char[11]+char[100]的地址空间。

union: 只会开辟char[100]的地址空间。

 

最后:struct 赋值以后不会丢,而union赋值以后,是以最近的一个变量成员为准,如果要读之前的变量成员的值,那么将会出现脏数据。

 

标签:struct,union,成员,联合体,c++,char,内存,共用,100
From: https://www.cnblogs.com/jiduoduo/p/18132820

相关文章

  • 通过__cplusplus查看c++版本并检查gcc支持版本
    虽然平时开发都是用的c++11标准,但打算看一下wslubuntu里面的gcc默认支持什么标准~1打印__cplusplus宏#include<cstdio>intmain(){printf("%ld\n",__cplusplus);}➜testg++test_cpp_version.cpp-otest_cpp_version➜test./test_cpp_version20......
  • C++,四种强制类型转换,static_cast,const_cast,dynamic_cast,reinterpret_cast
      #include<iostream>usingnamespacestd;structA{virtualvoidfunc(){cout<<"Afunc"<<endl;}};structB:publicA{voidfunc(){cout<<"Bfunc"<<endl;}};intmain(){c......
  • C++未定义行为
    0前言未定义行为(UndefinedBehavior)是指语言标准未做规定的行为。同时,标准也从没要求编译器判断未定义行为,所以这些行为有编译器自行处理,在不同的编译器可能会产生不同的结果,又或者如果程序调用未定义的行为,可能会成功编译,甚至一开始运行时没有错误,只会在另一个系统上,甚至是在另......
  • C++ Prime 学习
    C++利用using语句:其一:指定别名点击查看代码intp[4][4]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};for(int(*i)[4]=p;i!=p+4;i++){ for(int*j=*i;j!=*i+4;j++){ cout<<*j<<endl; }}利用using之后点击查看代码<summary>点击查看代码</su......
  • C++ 解引用与函数基础:内存地址、调用方法及声明
    C++解引用获取内存地址和值在上一页的示例中,我们使用了指针变量来获取变量的内存地址(与引用运算符&一起使用)。但是,你也可以使用指针来获取变量的值,这可以通过使用*运算符(解引用运算符)来实现:stringfood="Pizza";//变量声明string*ptr=&food;//指针声明//引用......
  • C++算法题解 - 递归实现排列型枚举 - 递归法 (图文) (递归搜索树)
    题目:递归实现排列型枚举把1∼n这n个整数排成一行后随机打乱顺序,输出所有可能的次序。输入格式一个整数n。输出格式按照从小到大的顺序输出所有方案,每行1个。首先,同一行相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。数据......
  • C++,文件,文件夹操作,创建、删除、检测
     推荐 filesystem,特别好用,除了新建、删除、复制、移动文件夹,还支持磁盘空间检测,权限检测,路径处理。 一、使用系统库//检测文件,检测文件夹/*windows*头文件:io.h*函数:intaccess(constchar*_Filename,int_AccessMode);**_AccessMode参数说明:00表示只判断......
  • C++生成随机数
    C++11标准#include<iostream>#include<random>usingnamespacestd;intmain(){cout<<"C++11"<<endl;default_random_enginerandom(time(nullptr));uniform_int_distribution<int>random_num1(1,100......
  • 关于C++作用域符的一种用法
    当作用域符号::前不带类名,或者namespace名的时候,表示是全局作用域的意思,也就是表示所调用的函数是全局函数,或者是某个动态库的函数,这对与代码的可阅读性有很大的帮助,因为它与类型成员函数的调用做了区分,表明该函数不是类成员函数如下图的send()函数,其前面的::表明send()函数不是......
  • linux C++程序测试命令的一种实现
    linuxC++程序测试命令的一种实现前言在程序开发调试过程中,或者已经部署的情况下,我们常常需要执行一些测试命令。在命令行端输入命令,然后程序执行,说起来简单,但是当程序本身有很多终端调试信息输出时,命令输入很不方便。针对上述问题,以下提供一个使用消息队列的命令行测试小工具......