c语言联合体作用,C语言 联合体(Unions)

C语言 联合体(Unions)

联合体是C语言中可用的特殊数据类型,它允许将不同的数据类型存储在同一内存位置。

定义联合体

联合体,您必须以与定义结构相同的方式使用 union 语句, union语句为您的程序定义了一个新数据类型,该数据类型具有多个成员变量。

union [union tag] {

member definition;

member definition;

...

member definition;

} [one or more union variables];

这是定义具有三个成员i,f和str的名为Data的联合体类型的方式-

union Data {

int i;

float f;

char str[20];

} data;

现在, Data类型的变量可以存储整数,浮点数或字符串。在上面的示例中,数据类型将占用20个字节的内存空间,因为这是字符串可以占用的最大空间。以下示例显示上述union占用的总内存大小-

#include

#include

union Data {

int i;

float f;

char str[20];

};

int main( ) {

union Data data;

printf( "Memory size occupied by data : %d\n", sizeof(data));

return 0;

}

编译并执行上述代码后,将产生以下输出-

Memory size occupied by data : 20

访问联合体

要访问Union的任何成员,我们使用成员访问运算符(.),您可以使用关键字 union 定义union类型的变量。

#include

#include

union Data {

int i;

float f;

char str[20];

};

int main( ) {

union Data data;

data.i=10;

data.f=220.5;

strcpy( data.str, "C Programming");

printf( "data.i : %d\n", data.i);

printf( "data.f : %f\n", data.f);

printf( "data.str : %s\n", data.str);

return 0;

}

编译并执行上述代码后,将产生以下输出-

data.i : 1917853763

data.f : 4122360580327794860452759994368.000000

data.str : C Programming

在这里,我们可以看到Union的 i 和 f 成员的值已变化 ,因为分配给变量的最终值已占用内存位置。

现在,让我们再次查看同一示例,其中一次将使用一个变量,这是拥有Union的主要目的-

#include

#include

union Data {

int i;

float f;

char str[20];

};

int main( ) {

union Data data;

data.i=10;

printf( "data.i : %d\n", data.i);

data.f=220.5;

printf( "data.f : %f\n", data.f);

strcpy( data.str, "C Programming");

printf( "data.str : %s\n", data.str);

return 0;

}

编译并执行上述代码后,将产生以下输出-

data.i : 10

data.f : 220.500000

data.str : C Programming

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值