C 上的联合数组

c++

1个回答

写回答

Ivanacheung

2025-07-09 23:33

+ 关注

AI
AI

联合数组的定义和特点

联合数组是一种特殊的数据结构,它将不同类型的数据存储在同一个数组中。在C语言中,可以使用结构体来实现联合数组。联合数组的特点是可以同时存储不同类型的数据,并且可以通过一个索引来访问这些数据。

联合数组的应用场景

联合数组常用于需要同时存储不同类型数据的场景,例如在图形学中,可以使用联合数组来存储一个图形的坐标信息和颜色信息。在网络编程中,可以使用联合数组来存储不同类型的数据包。此外,联合数组还可以用于实现多态数据结构,例如在实现链表或树结构时,可以使用联合数组来存储不同类型的节点数据。

联合数组的案例代码

下面以一个图书馆管理系统为例,展示如何使用联合数组存储不同类型的图书信息。

c

#include <stdio.h>

struct Book {

int id;

char title[50];

union {

char author[50];

int year;

} info;

};

int mAIn() {

struct Book books[3];

books[0].id = 1;

strcpy(books[0].title, "C Programming");

strcpy(books[0].info.author, "John Smith");

books[1].id = 2;

strcpy(books[1].title, "Data Structures");

strcpy(books[1].info.author, "Jane Doe");

books[2].id = 3;

strcpy(books[2].title, "ALGorithm Design");

books[2].info.year = 2022;

printf("Book 1: id=%d, title=%s, author=%s\n", books[0].id, books[0].title, books[0].info.author);

printf("Book 2: id=%d, title=%s, author=%s\n", books[1].id, books[1].title, books[1].info.author);

printf("Book 3: id=%d, title=%s, year=%d\n", books[2].id, books[2].title, books[2].info.year);

return 0;

}

使用联合数组存储图书信息

在上述代码中,我们定义了一个结构体Book,它包含了图书的编号、标题和作者或出版年份信息。我们通过联合数组来存储不同类型的图书信息。在结构体中,我们使用了一个联合体info来存储作者和出版年份。当我们存储作者信息时,将其存储在info的author字段中;当我们存储出版年份信息时,将其存储在info的year字段中。

在主函数中,我们创建了一个包含三本图书的数组books。然后,我们分别为每本图书的属性赋值,并使用索引访问相应的数据。最后,我们通过printf函数将图书的信息输出到控制台上。

通过以上案例代码,我们可以看到联合数组的灵活性和实用性。它可以方便地存储不同类型的数据,并且通过一个索引来访问这些数据,使得程序设计更加简洁高效。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号