C语言进1

简介: C语言进1

C语言进阶:结构体与联合体

在C语言编程中,结构体(struct)和联合体(union)是两种用于存储多个不同类型数据的数据结构。它们各自具有独特的特点和用途,使得程序员能够更灵活、更有效地处理复杂数据类型。本文将详细介绍结构体和联合体的概念、使用方式及在编程中的应用。

一、结构体

结构体是一种用户自定义的数据类型,它允许我们将多个不同类型的数据组合成一个单独的数据单元。结构体中的每个数据成员可以有不同的类型,并且可以有自己的名称。

下面是一个简单的结构体示例:

c复制代码

 

#include <stdio.h> 

 

 

 

// 定义一个名为Student的结构体

 

struct Student {

 

char name[50];

 

int age;

 

float score;

 

};

 

 

 

int main() {

 

// 创建一个Student类型的变量student1

 

struct Student student1;

 

 

 

// 为student1的成员赋值

 

strcpy(student1.name, "张三");

 

student1.age = 20;

 

student1.score = 85.5;

 

 

 

// 打印student1的成员

 

printf("姓名:%s,年龄:%d,成绩:%.1f\n", student1.name, student1.age, student1.score);

 

 

 

return 0;

 

}

在上面的代码中,我们首先定义了一个名为Student的结构体,它包含三个成员:name(字符数组)、age(整型)和score(浮点型)。然后,我们创建了一个Student类型的变量student1,并为它的成员赋值。最后,我们打印出student1的成员值。

二、联合体

联合体与结构体类似,也是一种用户自定义的数据类型。不同的是,联合体中的所有成员都占用同一块内存空间,即联合体的大小等于其最大成员的大小。这意味着,在同一时间,联合体只能存储其一个成员的值。

下面是一个联合体的示例:

c复制代码

 

#include <stdio.h> 

 

 

 

// 定义一个名为Data的联合体

 

union Data {

 

int intVal;

 

float floatVal;

 

char charVal;

 

};

 

 

 

int main() {

 

// 创建一个Data类型的变量data

 

union Data data;

 

 

 

// 为data的不同成员赋值(注意:这会覆盖之前的值)

 

data.intVal = 10;

 

data.floatVal = 20.5;

 

data.charVal = 'A';

 

 

 

// 打印data的当前值(取决于最后赋值的成员)

 

printf("最后一个赋值的成员类型是:");

 

if (data.charVal) {

 

printf("char,值为:%c\n", data.charVal);

 

} else if (data.floatVal) {

 

printf("float,值为:%.1f\n", data.floatVal);

 

} else {

 

printf("int,值为:%d\n", data.intVal);

 

}

 

 

 

return 0;

 

}

在这个例子中,我们定义了一个名为Data的联合体,它包含三个成员:intValfloatValcharVal。然后,我们创建了一个Data类型的变量data,并尝试为它的不同成员赋值。由于联合体成员共享同一块内存空间,因此每次赋值都会覆盖之前的值。最后,我们打印出data的当前值,这取决于最后赋值的成员。

三、总结

结构体和联合体是C语言中两种强大的数据结构,它们允许我们以更灵活、更有效的方式组织和管理数据。结构体适用于将多个相关数据组合成一个整体,而联合体则适用于在同一内存空间中存储不同类型的数据。在实际编程中,我们应该根据具体需求选择合适的数据结构来优化代码和提高效率。

 

相关文章
|
5月前
|
C语言 图形学 C++
|
4月前
|
Rust 算法 编译器
|
Java 编译器 Linux
第一个C语言程序(认识C语言的第一步)
第一个C语言程序(认识C语言的第一步)
46 0
|
编译器 C语言
C语言杂碎知识 最后两个肯定你不知道
C语言杂碎知识 最后两个肯定你不知道
|
编译器 程序员 Linux
C语言——可执行程序过程
C语言——可执行程序过程
|
C语言 C++
【C语言】初始C语言(1)
【C语言】初始C语言(1)
|
存储 编译器 C语言
C语言学习分享(第二次)------了解C语言-上
这篇文章主要给大家分享基础的C语言知识,让我们对C语言有一个大概的了解,这篇文章会从循环和函数一直讲到指针和结构体,但是都是对于每个知识点的简单认识,不会详细的说明,就是告诉大家C语言有这个东西,在我们后面的学习(文章)中会给大家一一详解,这篇文章很长,知识点多,大家可以看目录按需阅读.现在正式开始我们C语言的学习.(分为两次讲解)
|
存储 程序员 C语言
【C语言】文件的相关操作(一文10分钟彻底弄懂)
🐳文件简介 当程序结束时,内存中的数据就会丢失,这样每次运行程序时都要重新输入数据。那么有没有可以长久保存数据的方法呢?当然是有的啦!这个方法就是使用文件操作,用文件保存键盘输入和屏幕输出的数据,将数据以文件的形式存放在光盘、磁盘等外存储器上,可达到重复使用、永久保存数据的目的。
96 0
|
存储 Java Linux
【C语言】关于我回头学的那些输入输出等(四)
我的第一门语言就是C,但是学艺不精,中途跑去学了C#和Java后,感觉到了C的重要性,毕竟是最接近底层的语言,又跑回来学C。 毕竟前两门的控制语句,变量什么的都是类似的,回到C后只需要学习一些特定C的语法,比如宏,预编译指令等等,这些对我来说都是陌生的词汇。 所以边学边记录一下以前的知识。
99 0
|
Java 编译器 C语言
初识c语言系列-1-第一个c语言程序
初识c语言系列-1-第一个c语言程序
初识c语言系列-1-第一个c语言程序