【发布时间】:2015-09-04 14:01:01
【问题描述】:
我想在结构 S 中声明一个 int num。那么同一个结构也应该有一个大小为 num 的数组 B(所以B 将从它自己的结构中访问num)。
在函数中,我可以做到,
func(int A)
{
int max=A; //I could use A directly, I am just trying to explain my plan.
int B[max];
}
同样不适用于结构体,
struct S {
int num;
int data[num]; //this is wrong, num is undeclared
};
有什么办法可以做到吗?
【问题讨论】:
-
对象不能访问 C 中的其他对象。这不是 OOP。但是您不是“访问”一个对象,而是使用可变数组大小的值。使用 灵活的数组成员 并将其大小存储在 'max' 中(尽管我将其称为
length或类似名称).. -
结构不能是动态的,它将是固定值..
-
即使在结构之外,像
int data[num];这样的声明并不意味着data会在您更改num时改变大小...这意味着data将具有一个固定大小,具体取决于num的值是在声明data时。