📜  C |结构与联合|问题5(1)

📅  最后修改于: 2023-12-03 14:39:40.965000             🧑  作者: Mango

C语言结构与联合:问题5

在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;
};

在第一种情况下,我们使用了指向字符型数据的指针,这样为我们提供了更大的灵活性。在第二种情况下,我们使用了一个定义为宏的值来为字符数组限定固定的大小。

参考链接