这是代码:
int EdgeCount = 0;
int numOfEdges = 0;
void addEdge() {
// some code
numOfEdges++;
}
int EdgeWeightArray[numOfEdges]; // error
我希望带有可变参数的全局数组在以后使用它,但是我不能这样做,因为没有
#define
我们就不能定义全局数组参数。 #define
不是可变的东西。在我的代码中,numOfEdges
是可变的,我无法使其恒定。 最佳答案
EdgeWeightArray
具有全局scobe,因此它必须是固定大小。但是numOfEdges
当然不是常量表达式。
您期望EdgeWeightArray
的大小是多少?您期望在增加numOfEdges
时它会增长吗?如果是这样,则需要查看动态内存分配。即malloc
和realloc
。
没有错误检查的简短示例:
int numOfEdges = 0;
int *EdgeWeightArray;
void addEdge(some parameters) {
//SOME CODE
numOfEdges++;
EdgeWeightArray = realloc(EdgeWeightArray, numOfEdges * sizeof(EdgeWeightArray[0]));
}