【发布时间】:2021-02-03 03:28:02
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
struct Cases
{
char name[3];
int cases;
};
int main()
{
int n=5;
struct Cases Real;
Real.name[0] = 'a';
Real.name[1] = 'b';
Real.name[2] = 'c';
printf("Size before: %d \n", sizeof Real.name);
Real.name = (char *)malloc(5 * sizeof(char));
printf("Size after: %d \n", sizeof Real.name);
return 0;
}
嗨,我正在尝试更改结构内部数组的大小,但它给出了错误。我尝试先做空数组,但也没有成功。有什么帮助吗?
【问题讨论】:
-
Real.name = (char *)malloc(5 * sizeof(char));name不是指针,因此您无法随时更改其大小。 -
数组不是指针,指针不是数组。我建议你阅读comp.lang.c. faq 的第 6 部分。
-
您也许可以使用flexible array member。
标签: arrays c pointers data-structures dynamic-memory-allocation