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月前
|
Rust 算法 编译器
|
7月前
|
存储 C语言 C++
C语言指针精简版(三)
C语言指针精简版(三)
|
7月前
|
编译器 C语言
C语言指针精简版(二)
C语言指针精简版(二)
|
7月前
|
存储 程序员 编译器
C语言指针精简版(一)
C语言指针精简版(一)
|
Java 编译器 Linux
【C】C语言的介绍以及第一个C语言程序
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU )以及超级电脑等作业平台。
|
存储 C语言
跑哥教你掌握C语言指针最根本的问题
指针 指针变量用来记录地址数据。 指针变量的用途就是用来找另外一个变量的,只有记录了有效地址的指针才能使用。
跑哥教你掌握C语言指针最根本的问题
|
Java 编译器 C语言
初识c语言系列-1-第一个c语言程序
初识c语言系列-1-第一个c语言程序
初识c语言系列-1-第一个c语言程序
|
C语言
【C语言初阶】C语言%(%d,%c...)
符号%除了取余,另一个含义就是引导符;如%d,%c... 下面就列举一些(不深入):
267 0
|
存储 网络协议 C语言
【C语言】C语言之深入指针进阶(建议收藏以备不时之需)(一)
🗽初阶指针请点击此跳转 https://blog.csdn.net/DerrickWestbrook/article/details/117787490. 指针的主题,在上述链接文章中已经解释过了,我们已经知道了指针的概念: 指针就是个变量,用来存放地址,地址唯一标识一块内存空间。 指针的大小是固定的4/8个字节(32位平台/64位平台)。 指针是有类型的,指针的类型决定了指针的±整数的步长,指针解引用操作的时候的权限。 在本篇文章将继续讲解质指针的高级主题
【C语言】C语言之深入指针进阶(建议收藏以备不时之需)(一)
【C语言】C语言之深入指针进阶(建议收藏以备不时之需)(三)
🗽初阶指针请点击此跳转 https://blog.csdn.net/DerrickWestbrook/article/details/117787490. 指针的主题,在上述链接文章中已经解释过了,我们已经知道了指针的概念: 指针就是个变量,用来存放地址,地址唯一标识一块内存空间。 指针的大小是固定的4/8个字节(32位平台/64位平台)。 指针是有类型的,指针的类型决定了指针的±整数的步长,指针解引用操作的时候的权限。 在本篇文章将继续讲解质指针的高级主题
【C语言】C语言之深入指针进阶(建议收藏以备不时之需)(三)