首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言-枚举、共用

共用体和结构体一样也可以按顺序存放相同或者不同数据类型,但是与结构体的区别是,共用体所有成员共用一个存储空间,存储空间由成员中存储空间最大的来决定。...共用体定义示例: union app { int a; int b; char c; }; **共用体:**也称为联合体,采用内存覆盖技术,每个成员共用一个内存空间,开空间是以最大的成员开空间...共用体的语法和使用方法(定义、成员变量的访问形式等等)与结构体一样。...匿名方式定义,只能在定义共用体的时候就定义变量 union { int a; int b; char c; }a1,a2,a3; //定义3个变量 union app2 {...枚举 C语言的枚举可以给一串有序的数字集合定义名字,特别是数量较多的整数需要定义名字时,比#define更加方便。

81920

C语言 | 共用体概述

什么是C语言共用体类型 一般形式 union 共用体名 {   成员表列 }变量表列; 结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。...而共用变量所占的内存长度等于最长的成员的长度。 C语言引用共用变量的方式 只有先定义了共用变量才能引用它,但应注意,不能引用共用变量,而只能引用共用变量中的成员。...C语言共用体类型数据的特点 同一个内存段可以用来存放几种不同类型的成员,但在每一瞬时只能存放其中一个成员,而不是同时存放几个。 可以对共用变量初始化,但初始化表中只能有一个常量。...不能对共用变量名赋值,也不能企图引用变量名来得到一个值。 C语言规定不能把共用变量作函数参数,但可以使用指向共用变量的指针作函数参数。...100道C语言源码案例请去公众号:C语言入门到精通

95700
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言 | 共用体概述

    在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...什么是C语言共用体类型 一般形式 union 共用体名 { 成员表列 }变量表列; 结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。...而共用变量所占的内存长度等于最长的成员的长度。 C语言引用共用变量的方式 只有先定义了共用变量才能引用它,但应注意,不能引用共用变量,而只能引用共用变量中的成员。...C语言共用体类型数据的特点 同一个内存段可以用来存放几种不同类型的成员,但在每一瞬时只能存放其中一个成员,而不是同时存放几个。 可以对共用变量初始化,但初始化表中只能有一个常量。...不能对共用变量名赋值,也不能企图引用变量名来得到一个值。 C语言规定不能把共用变量作函数参数,但可以使用指向共用变量的指针作函数参数。

    74530

    9.5 C语言共用体类型

    01什么是共用体类型 1、一般形式 union 共用体名 { 成员表列 }变量表列; 2、结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。...而共用变量所占的内存长度等于最长的成员的长度。 02 引用共用变量的方式 1、只有先定义了共用变量才能引用它,但应注意,不能引用共用变量,而只能引用共用变量中的成员。...3、共用变量中起作用的成员是最后一次被赋值的成员,在对共用变量中的一个成员赋值后,原有变量存储单元中的值就取代。 4、共用变量的地址和它的各成员的地址都是同一地址。...5、不能对共用变量名赋值,也不能企图引用变量名来得到一个值。 6、以前的C规定不能把共用变量作函数参数,但可以使用指向共用变量的指针作函数参数。...7、共用体类型可以出现在结构体类型定义中,也可以定义共用体数组。 C语言 | 冒泡排序比较大小 更多案例可以go公众号:C语言入门到精通

    7472725

    共用变量的使用

    共用变量的使用 程序中一般不能直接把共用变量作为一个整体进行各种操作,也是通过成员运算得对共用变量的各个成员变量的引用来完成各种运算和操作。...引用共用变量成员的一般形式是: 共用变量名.成员名 使用访问上面共用变量u1的成员a采用如下方式: u1.a 如果两个共用变量使用同一个共用体类型定义,则它们之间可以相互赋值,例如上面定义的两个变量...共用变量在定义时也可以进行初始化工作,其一般形式如下: union 共用型名 共用变量名={成员1初值}; 注意:共用变量进行初始化工作时,赋值符右边的花括号中只能是第一个成员的初始 值,并且花括号是不能省略的...printf("交换操作后:d.n=%d\n",d.n); return ; } 完整代码的程序运行结果: 运行结果分析:在本例中定义的共用体类型变量d有两个成员,成员n是short...注意成员n和c的内存空间是共用的。 程序第11行给成员n赋值为十六进制整数0xFfF11对应的二进制是1111111100010001。第12行以十进制有符号数形式输出的结果是-239。

    73010

    C语言共用体与枚举类型-学习三十

    数据类型 成员名n; }; 例如: union data { int i; char c; float f; }; 共用变量的定义方式与结构体变量的定义方式相似..., d2; 3.直接定义共用体类型的变量,不给出共用体名 union { int i; char c; float f;....c 或 pd ->c、d1.f 或 pd ->f 同类型的共用变量之间可以互相赋值。...("sd.i: %d,sd.c: %c,sd.f: %f\n", sd.i, sd.c, sd.f); } image.png 从上面的运行结果可看出 对共用变量成员的赋值,保存的是最后的赋值前面对其他成员的赋值均被覆盖...5.当不同源文件中用到同一类型数据时(数组、结构体等),常用typedef声明一些数据类型。把它们单独放在一个头文件中。 6.使用typedef名称有利于程序的通用与移植。

    54210

    c语言共用体union、枚举、大小端模式

    上一个专题我们详细的分享了c语言里面的结构体用法,读者在看这些用法的时候,可以一边看一边试验,掌握了这些基本用法就完全够用了,当然在以后的工作中,如果有遇到了更高级的用法,我们可以再来总结学习归纳。...枚举在C语言中其实是一些符号常量集。直白点说:枚举定义了一些符号,这些符号的本质就是int类型的常量,每个符号和一个常量绑定。...2、为什么要用枚举,和宏定义做对比: (1)C语言没有枚举是可以的。使用枚举其实就是对1、0这些数字进行符号化编码,这样的好处就是编程时可以不用看数字而直接看符号。...,不能把元素的数值直接赋予枚举变量,如一定要把数值赋予枚举变量,则必须用强制类型转换,但是我在测试时,发现编译器居然可以这样赋值,读者最好自己测试一下(不过这里后面发现在c语言里面可以这样操作,在c++...理论分析:原因和&运算符不能测试一样,因为C语言对运算符的级别是高于二进制层次的。右移运算永远是将低字节移除,而和二进制存储时这个低字节在高位还是低位无关的。 (3)强制类型转换和上面分析一样的。

    1.8K20

    c语言共用体union、枚举、大小端模式

    上一个专题我们详细的分享了c语言里面的结构体用法,读者在看这些用法的时候,可以一边看一边试验,掌握了这些基本用法就完全够用了,当然在以后的工作中,如果有遇到了更高级的用法,我们可以再来总结学习归纳。...枚举在C语言中其实是一些符号常量集。直白点说:枚举定义了一些符号,这些符号的本质就是int类型的常量,每个符号和一个常量绑定。...2、为什么要用枚举,和宏定义做对比: (1)C语言没有枚举是可以的。使用枚举其实就是对1、0这些数字进行符号化编码,这样的好处就是编程时可以不用看数字而直接看符号。...,不能把元素的数值直接赋予枚举变量,如一定要把数值赋予枚举变量,则必须用强制类型转换,但是我在测试时,发现编译器居然可以这样赋值,读者最好自己测试一下(不过这里后面发现在c语言里面可以这样操作,在c++...理论分析:原因和&运算符不能测试一样,因为C语言对运算符的级别是高于二进制层次的。右移运算永远是将低字节移除,而和二进制存储时这个低字节在高位还是低位无关的。 (3)强制类型转换和上面分析一样的。

    78940

    C语言知识总结——宏,枚举,结构体,共用

    1、define宏定义 以#号开头的都是编译预处理指令,它们不是C语言的成分,但是C程序离不开它们,#define用来定义一个宏,程序在预处理阶段将用define定义的来内容进行了替换。...“文件夹”的使用。...(联合体) 在进行某些算法的C语言编程的时候,需要使几种不同类型的变量存放到同一段内存单元中。...也就是使用覆盖技术,几个变量互相覆盖。这种几个不同的变量共同占用一段内存的结构,在C语言中 以关键字union声明的一种数据结构,这种被称作“共用体”类型结构,也叫联合体。...注意:1、不能把共用变量作为函数参数,也不能是函数带回共用变量,但可以使专用指向共用变量的指针 2、所有成员占用同一段内存,修改一制个成员会影响其余所有成员。

    2.3K40

    C语言 | register定义变量

    例89:学习C语言register定义变量的用法。 解题思路:register这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率。注意是尽可能,不是绝对。...因为,如果定义了很多register变量,可能会超过CPU的寄存器个数,超过容量。...C语言源代码演示: #include//头文件  int main()//主函数  {   register int i;//定义寄存器变量    int temp=0;//定义整型变量...以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C语言学习路线     C语言开发工具 更多案例可以go公众号:C语言入门到静通

    2.6K32

    C语言变量与常量

    跟着肯哥(不是我)学C语言变量和常量、跨文件访问、栈空间 栈空间还不清楚,期待明天的课程内容 C变量 变量(Variable)是用于存储和表示数据值的名称。...主要包括四个环节:定义、初始化、声明、使用 在我刚学C语言的时候,看的网课就专门强调了定义、声明和初始化。 在看这次学习营内容的时候,我对这些内容也已经很模糊了。...变量名(Variable Name)是给变量起名称,用于在程序引用该变量:由字母、数字、下划线组成,首字符不能是数字,不能与C语言内置关键字重名。...C语言内置关键字是不包含malloc的。因为学数据结构的时候经常用到,我之前以为它是的。 初始值(Initial Value)是可选的,用于给变量赋予一个初始值。...file1.c #include "shared.h" int x = 10; 在其他源文件中包含头文件,即可访问(使用)该变量: // file2.c #include "shared.h" //

    18620

    C语言 | register定义变量

    “要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一” ——包租婆 这道理放在C语言学习上也一并受用。...在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...例89:学习C语言register定义变量的用法。 解题思路:register这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率。注意是尽可能,不是绝对。...因为,如果定义了很多register变量,可能会超过CPU的寄存器个数,超过容量。...C语言源代码演示: #include//头文件 int main()//主函数 { register int i;//定义寄存器变量 int temp=0;//定义整型变量

    2.5K32

    8.2 C语言指针变量

    01怎么定义指针变量 1、一般形式 类型名 *指针变量名; 例子:int *point_1,*point_2; 左端的int是在定义指针变量时必须指定的“基类型”。...指针变量的基类型用来指定此指针变量可以指向的变量的类型。 2、指针变量前面的“*”表示该变量的类型为指针变量。...5、指针变量中只能存放地址(指针),不要将一个整数赋给一个指针变量。 02怎样引用指针变量 1、给指针变量赋值。如:p=&a;指针变量p的值是变量a的地址,p指向a。 2、引用指针变量指向的变量。...如已执行“p=&a”,即指针变量p指向了整型变量a,则printf(“%d”,*p);其作用是以整数形式输出指针变量p所指向的变量的值,即变量a的值。 3、引用指针变量的值。...3、函数调用可以得到一个返回值,而使用指针变量作参数,可以得到多个变化了的值。 C语言 | 函数实现输出I love you 更多案例可以go公众号:C语言入门到精通

    1.3K2625

    C语言(数据和变量

    这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,关注+收藏,欢迎欢迎~~ 个人主页:小羊在奋斗 所属专栏:C语言...C语言标准规定:sizeof(long)>=sizeof(int)。...太字节(terabyte) ——TB 1TB=1024GB 3. signed 和 unsigned C语言使用...对于有无符号的打印是不相同的: 值得一说的是,上面用无符号占位符%u来打印有符号数-10,显示出的是一个很大的整数,这其中是有一定道理的,感兴趣的朋友可以阅读我的另一篇文章 —> C语言...一般我们在学习c\c++语言的时候,我们会关注内存的三个区域:栈区、堆区、静态区。 其实内存区域的划分会更加细致,这里我们也是只简单的了解一下。

    6310

    C语言|图解指针变量

    = NULL; 图解: 1.1 己址和己空间 指针变量也是一个变量,对应一块内存空间,对应一个内存地址,指针名就是己址。...1.2 己值、他址、他空间 指针变量的值就是其指向的空间的地址,指向的地址的空间大小就是指针变量指向类型的大小。...1.3 声明与初始化 当声明一个指针变量,没有初始化时,指针变量只获得了其自身的内存空间,而其指向还没有确定,此时指针变量解引用做左值是非法操作。...a+3是指相对于地址a,偏移sizeof(int)个字节 *(b+3) = 'x'; // b+3是指相对于地址b,偏移sizeof(char)个字节 printf("%d, %c\...); printf("%d\n",a[2][0]); // 5 } 以下代码可以用以下图示辅助理解: ref:Kyle Loudon《 Mastering Algorithms with C

    1.6K20
    领券