C语言在线运行

版本:

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

                        
以下是用户最新保存的代码
双结构体运用(有自定义函数版) 发布于:2025-11-21 15:02 双结构体运用(无自定义函数) 发布于:2025-11-21 15:01 图书查找器(综合) 发布于:2025-11-21 09:41 菱形塔通用 发布于:2025-11-20 22:25 结构体与指针 发布于:2025-11-20 17:15 综合题1(注释版) 发布于:2025-11-20 16:49 (综合题1) 录入 N 个学生信息(学号、姓名、3 门课程成绩); 计算每个学生的平均分和总分; 按平均分降序排序并输出; 查找指定学号的学生信息(找到则输出,未找到提示 “无此学生”)。 发布于:2025-11-20 16:42 结构体,指针,函数,数组结合,计算多个学生信息及成绩平均值和最大平均值(综合)(优化) 发布于:2025-11-20 14:38 结构体,指针,函数,数组结合,计算多个学生信息及成绩平均值和最大平均值(综合) 发布于:2025-11-20 11:51 结构体(指针与函数) 发布于:2025-11-20 10:36 结构体(数组运用) 发布于:2025-11-20 09:53 结构体(示范) 发布于:2025-11-20 09:16 编写函数,用指针实现“不用临时变量的两数交换”和“数组排序(冒泡排序)”指针与函数的关系 完整版 发布于:2025-11-19 17:02 编写函数,用指针实现“不用临时变量的两数交换” 发布于:2025-11-19 16:59 指针与数组的简单三种用法(累加,自增,偏移) 发布于:2025-11-19 16:32 指针基础(换数) 发布于:2025-11-19 16:04 指针基础用法 发布于:2025-11-19 15:02 素数(函数版) 发布于:2025-11-19 14:52 素数(普通版本) 发布于:2025-11-19 14:44 斐波那契数列问题(生兔子,黄金分割比例) 发布于:2025-11-19 14:10 交换数组中的元素(指针,函数) 发布于:2025-11-19 10:04 字符串长度(指针,函数) 发布于:2025-11-19 09:33 # 前n项和计算 发布于:2025-11-18 20:15 C语言学习代码测试 发布于:2025-11-18 15:49 整数各位之和 发布于:2025-11-19 09:21 冒泡法十个字符大小排序 发布于:2025-11-18 11:49 冒泡排序范本 发布于:2025-11-18 14:10 定义函数分析字符串(*****难) 发布于:2025-11-18 10:51 使用函数求数组中的最大值最小值和平均数(难) 发布于:2025-11-18 09:37 KMP算法获取NEXT 发布于:2025-11-16 17:07 二维数组的各行各列的和以及总数和(以解,难) 发布于:2025-11-14 13:51 二维数组,每行最大值以及和 发布于:2025-11-14 12:54 数组中最大最小值 发布于:2025-11-14 11:17 数组的输入输出 发布于:2025-11-14 10:57 杨辉三角形(二维数组) 发布于:2025-11-14 10:50 派的近似值(难题)未理解 发布于:2025-11-13 22:21 输出最大 数 发布于:2025-11-13 21:44 九九乘法表 发布于:2025-11-13 21:31 最大公约数和最小公倍数 发布于:2025-11-13 17:10 加减交替累加和 发布于:2025-11-13 16:21 链表(线性表)的操作 发布于:2025-11-21 00:19 顺序表尾部添加元素 发布于:2025-11-12 02:22 初始化线性表 发布于:2025-11-07 13:53 List初始化 发布于:2025-11-07 13:40 模糊pid控制 发布于:2025-11-07 09:28 三个数换顺序 发布于:2025-11-19 14:12 Malloy函数的使用 发布于:2025-11-05 15:39 输入MAC,输出长度为10的由字母和数字(A-Z, a-z, 2-9)组成的随机字符串 发布于:2025-10-30 10:46 计算圆柱体体积 发布于:2025-10-30 08:38 签名数据提取 发布于:2025-10-29 16:32 [更多]
显示目录

共用体



搭载国产梦丘操作系统,支持安装软件,在线编程可视化开发软件,无需配置开发环境

点击购买 梦丘固件

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操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。