一文带你彻底了解共用体C语言

 2023-02-28 06:50:52  阅读 0

一、什么是共用体有什么用?

C语言提供了一种构造类型的数据——共用体,它和结构体类似,也 是一种由用户自己定义的数据类型,也可以由若干不同类型的数据组合而 成,组成共用体的若干个数据也称为其成员。和结构体不同的是,结构体 变量每个成员分别占有各自的内存单元,共用体变量各个成员都从同一 地址开始存放,即成员间互相覆盖

union 共用体名
{
     数据类型1   成员名1;
     数据类型2   成员名2;
      ………
};

二、共用体的定义

先定义共用体类型,再定义共用体变量。一般格式为:

共用体类型名  变量名列表;

union data
  {
		int i;
		char c;
		float f;
  };
  union data d1,d2;

直接定义法是定义共用体类型的同时,定义共用体变量。 定义的一般形式如下:

union [共用体名]
    {
      数据类型1   成员名1;
      数据类型2   成员名2;
  		    ………
    }变量列表;

共用体变量引用的一般形式如下:

共用体变量名.成员名

在引用共用体类型数据时要注意以下几点:

①每一瞬间只有一个成员起作用,其他的成员不起作用。

②共用体变量中起作用的成员是最后一次存放的成员,在存入一 个新的成员后原有成员就失去作用。

③共用体变量的地址和它的各成员的地址都是同一地址。

④共用体类型可以出现在结构体类型定义中,也可以定义共用体 数组。反之,结构体也可以出现在共用体类型定义中,数组也可 以作为共用体的成员。

我们最后看一道题结束:

#include<stdio.h>
int main()
{
 union
 {
  int i[2];
  long k;
  char c[4];
 }r,*s=&r;
 s->i[0]=0x39;
 s->i[1]=0x38;
 printf("%c\n", s->c[0]);
}

说明:r为共用体类型的变量,s为指向r的共用 体类型指针变量,其成员i、k、c共同占用4个字 节的存储单元,“s->i[0]=0x39;”为两个低字节 存储单元赋值十进制数57,“s->i[1]=0x38;”为 两个高字节存储单元赋值十进制数56,“printf (“%c\n”, s->c[0]);”以字符方式输出最低字节 的内容。字符’9’对应的ASCII码值为57,所以输 出结果为字符’9’。 

标签:

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码