【发布时间】:2021-02-03 06:12:25
【问题描述】:
struct Cases
{
int number;
char *name[][20];
};
我有这个结构,它的二维数组的大小是未知的。我尝试为其分配大小,但出现错误。
int main()
{
struct Cases Real;
Real.name = malloc(3 * sizeof(char));
if (Real.name == NULL) {
fprintf(stderr, "Malloc failed.\n");
exit(1);
}
.
.
.
【问题讨论】:
-
char *name[][20]- 这是一个字符数组的数组。它是一个字符串数组。这是一个段落数组。这个name应该代表什么?有人有一组名称数组?你想建模什么? -
name是一个灵活的数组成员(因为它的外部大小是未指定的),而不是一个指针,所以你不能分配给它。而且它不是char *,所以3 * sizeof(char)不会给出有用的大小。 -
您似乎混合了flexible array member 和一般指针。请下定决心。
-
@KamilCuk 我将从用户那里获取城市名称并将其存储在数组中,但大小会不断变化,因此我无法从一开始就定义它。我必须每次都分配它。
-
@user253751:
char *name[][20]声明了一个包含 20 个指向char的指针的数组。要声明一个指向char数组数组的指针,它必须是char (*name)[][20]。
标签: c multidimensional-array struct declaration dynamic-memory-allocation