C语言在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
一种实现f(x)函数的代码 发布于:2024-04-13 22:23 链表实现字符输入输出 发布于:2024-04-12 09:15 字符串功能 发布于:2024-04-12 00:55 哈夫曼编码的实现 发布于:2024-04-11 23:08 输入两位正整数,x,y ,x的十位是z的千位x的个位是z的十位,y的十位是z的个位,y的个位是z的百位 发布于:2024-04-11 22:00 链表实现多项式相加减 发布于:2024-04-12 09:30 用链表实现输入输出 发布于:2024-04-11 20:59 学习c语言代码 发布于:2024-04-11 20:18 计算每年的母亲节 发布于:2024-04-11 17:19 用switch进行四则运算 发布于:2024-04-11 16:37 求阿姆斯特朗数B 发布于:2024-04-11 15:21 strncmp和sscanf的使用 发布于:2024-04-11 11:28 笔记(二维数组) 发布于:2024-04-10 11:01 18.break语句 发布于:2024-04-10 10:06 19.continue语句 发布于:2024-04-10 10:21 17.循环结构 for语句 发布于:2024-04-10 09:48 16.循环结构 do while语句 发布于:2024-04-10 09:39 15.循环结构 while语句 发布于:2024-04-10 09:19 14.选择结果程序 switch语句 发布于:2024-04-10 09:08 水仙花数,3位数,其各位数立方等于该数本身 发布于:2024-04-09 23:48 求pi的值 发布于:2024-04-09 23:41 /*C语言显示99乘法表*/ 发布于:2024-04-09 23:10 W I just got 发布于:2024-04-09 14:31 协议软件工程师笔试题 发布于:2024-04-09 17:00 函数求和代码 发布于:2024-04-07 16:47 指针free之后,需要置NULL 发布于:2024-04-07 14:51 ABC 的值 发布于:2024-04-08 22:35 数据结构实验二 发布于:2024-04-06 20:52 从键盘输入10个数,统计非负数的个数,并计算非负数的和 发布于:2024-04-06 18:53 Demo for zzy 发布于:2024-04-06 00:09 递归逆序输出字符串 发布于:2024-04-03 23:32 求1000内的完数 完数:一个属恰好等于它的因子之和 发布于:2024-04-03 16:44 数据结构24.4.3 发布于:2024-04-03 15:15 ronggon class 4 发布于:2024-04-03 14:37 笔记(程序结构) 发布于:2024-04-03 11:04 笔记(类型转换) 发布于:2024-04-03 10:34 12.类型转换 发布于:2024-04-03 10:28 笔记(三目运算) 发布于:2024-04-03 09:49 笔记(逗号运算) 发布于:2024-04-03 09:38 笔记(逻辑运算) 发布于:2024-04-03 09:32 笔记(关系运算) 发布于:2024-04-03 09:04 兔子生兔子 发布于:2024-04-02 21:38 数据结构实验一 发布于:2024-03-31 21:13 判断素数(函数) 发布于:2024-03-30 19:01 选择排序说明 发布于:2024-03-30 00:19 寻找阿姆斯特朗数A 发布于:2024-04-11 15:10 冒泡排序。。 发布于:2024-03-27 15:53 动态链表尾插法 发布于:2024-03-27 15:51 动态链表头插法 发布于:2024-03-27 15:19 洛谷歌唱比赛 发布于:2024-03-27 14:10 [更多]
显示目录

共用体



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

C 共用体

共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。

定义共用体

定义共用体,必须使用 union 语句,方式与定义结构类似。union 语句定义了一个新的数据类型,带有多个成员。union 语句的格式如下:

union [union tag]
{
   member definition;
   member definition;
   ...
   member definition;
} [one or more union variables];

union tag 是可选的,每个 member definition 是标准的变量定义,比如 int i; 或者 float f; 或者其他有效的变量定义。在共用体定义的末尾,最后一个分号之前,您可以指定一个或多个共用体变量,这是可选的。下面定义一个名为 Data 的共用体类型,有三个成员 i、f 和 str:

union Data
{
   int i;
   float f;
   char  str[20];
} data;

现在,Data 类型的变量可以存储一个整数、一个浮点数,或者一个字符串。这意味着一个变量(相同的内存位置)可以存储多个多种类型的数据。您可以根据需要在一个共用体内使用任何内置的或者用户自定义的数据类型。

共用体占用的内存应足够存储共用体中最大的成员。例如,在上面的实例中,Data 将占用 20 个字节的内存空间,因为在各个成员中,字符串所占用的空间是最大的。下面的实例将显示上面的共用体占用的总内存大小:

#include <stdio.h>
#include <string.h>

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 关键字来定义共用体类型的变量。下面的实例演示了共用体的用法:

#include <stdio.h>
#include <string.h>

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

在这里,我们可以看到共用体的 if 成员的值有损坏,因为最后赋给变量的值占用了内存位置,这也是 str 成员能够完好输出的原因。现在让我们再来看一个相同的实例,这次我们在同一时间只使用一个变量,这也演示了使用共用体的主要目的:

#include <stdio.h>
#include <string.h>

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

在这里,所有的成员都能完好输出,因为同一时间只用到一个成员。

由JSRUN为你提供的C语言在线运行、在线编译工具
        JSRUN提供的C语言 在线运行,C语言 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout