【发布时间】:2018-06-14 13:16:07
【问题描述】:
代码如下:
int EdgeCount = 0;
int numOfEdges = 0;
void addEdge() {
// some code
numOfEdges++;
}
int EdgeWeightArray[numOfEdges]; // error
我希望以后使用带有可变参数的全局数组,但我不能这样做,因为没有#define,我们无法定义全局数组参数;而#define 不是一个变量。在我的代码中,numOfEdges 是可变的,我无法使其保持不变。
【问题讨论】:
-
这个简单的事情让我很困惑,在哈希和图表中思考了这么多之后我还是无法解决这个问题。
-
Variable Length Arrays (VLAs) 不能在全局/文件范围内使用。将其移动到某个函数或动态分配它 (
malloc())。请参阅stackoverflow.com/questions/12363558/… 了解更多信息。 -
您应该为此使用指针:
int* EdgeWeightArray = 0;。然后您需要使用EdgeWeightArray = malloc(numOfEdges, sizeof(int));分配内存。使用后别忘了释放指针
标签: c scope global variable-length-array