C语言中的联合又什么?

Python016

C语言中的联合又什么?,第1张

联合又称联合体或共用体(union),共用体是通过成员的相互覆盖,是的几个不同的变量共占一段内存,以此大道节省内存的目的。

union

data

{

int

i

char

c

float

f

}

a

上面的作用是定义联合体,举个例子吧,就像你定义一个整型常量,如

int

b=1

上面的那段代码等同与int,他是告诉系统有这么一个变量,那么接下来就是设置一个常量了,}号后面接着的a就像int

b=1中的b一样,系统这时就会为a这一个变量分配内存空间。

上面的联合体里有3个成员,也就是说有3个变量,A选项就是正确的赋值方式,就像b赋值为1一样,如果你想对具体某个成员赋值的话,就要用到“.”号或

“->”号,通常用“.”。

@[TOC]

结构:具有不同数据类型的值(成员)的集合。

联合跟结构很类似,不同在于联合的成员共享同一存储空间。

结构成员通过名字而不是位置访问(与数组的区别)

指定初始化:不需要与结构成员的顺序一致

结构的赋值: part2 = part1 ,直接赋值(与数组不同)

不能用==和!=判断结构是否相等

命名结构时,两种写法都可以,但是 结构用于链表时,必须使用结构标记。

结构里面也允许嵌套结构。

编译器只为最大的成员分配足够的内存空间

结构变量的成员存储在 不同 的内存地址中,联合的成员存储在 同一 内存地址中。

联合的作用:用联合来节省空间

构造混合的数据结构

每次对联合的成员赋值,都由程序负责改变标记字段的内容

许多程序中,我们只具有少量有意义的值。

我们为这种具有少量可能值的变量提供了一种专用类型——枚举。

区别:枚举常量的名字必须不同于 作用于范围内 声明的其他标识符。

枚举常量遵循C语言的作用域规则:如果枚举声明在函数体内,那么它的常量对外部函数来说是不可见的。

默认情况下,编译器会把整数0,1,2……赋值给特定枚举中的变量

如果想要指定变量的值,可以在声明时指定。

当没有为枚举常量指定值时,它的值比前面一个值大1.

C语言允许把枚举常量和普通整数混合。