📅  最后修改于: 2023-12-03 14:39:40.965000             🧑  作者: Mango
在C语言中,结构体和联合体(简称结构和联合)是两种非常常见的数据类型。结构体用于组织多个数据成员,而联合体用于在同一内存位置存储不同类型的数据成员。本文将讨论关于结构体和联合体的第五个问题。
下面这段代码中的结构体定义是正确的吗?如果不正确,请说明原因并给出正确的定义。
struct book {
char title[];
char author[];
double price;
};
这段代码中的结构体定义并不正确。其中,title和author是字符型数组类型,但没有指定数组的大小,也没有使用指针类型。这意味着编译器无法分配结构体中title和author成员的存储空间,因为它们的大小是未知的。
为了解决这个问题,我们可以使用指针或固定大小的数组来替代这种字符型数组类型。例如:
struct book {
char *title;
char *author;
double price;
};
或
#define MAX_TITLE 50
#define MAX_AUTHOR 30
struct book {
char title[MAX_TITLE];
char author[MAX_AUTHOR];
double price;
};
在第一种情况下,我们使用了指向字符型数据的指针,这样为我们提供了更大的灵活性。在第二种情况下,我们使用了一个定义为宏的值来为字符数组限定固定的大小。