我用C语言创建了一个简单的struct
,用于存储我的数据:
typedef struct
{
int n;
char *c[];
} simstr;
并且,对于此struct变量的赋值,我使用了以下代码:
simstr ex =
{
5,
"ex_11",
"ex_12",
"ex_13",
"ex_14",
"ex_15"
};
为了测试是否正确创建了ex
变量,我运行了这个函数:
void funct(simstr a)
{
int i,
n = a.n;
for (i = 0; i < n; i++)
{
printf("%s\n", a.c[i]);
}
}
funct(ex);
我成功编译了它。不幸的是,它返回2行Θ&
;然后,由于运行时错误,该程序停止。
你能否告诉我:为什么它会因为struct
的分配而出错?以及如何解决它们?
答案 0 :(得分:2)
您不能像其他结构一样复制flexible array member的结构。
最简单的解决方案是将指针作为函数参数用于结构,完全不涉及任何复制。然后结构将不会(不完整)复制。
使用address-of运算符&
从结构中创建指针。