这是代码:

int EdgeCount = 0;
int numOfEdges = 0;

void addEdge() {
    // some code
    numOfEdges++;
}

int EdgeWeightArray[numOfEdges]; // error


我希望带有可变参数的全局数组在以后使用它,但是我不能这样做,因为没有#define我们就不能定义全局数组参数。 #define不是可变的东西。在我的代码中,numOfEdges是可变的,我无法使其恒定。

最佳答案

EdgeWeightArray具有全局scobe,因此它必须是固定大小。但是numOfEdges当然不是常量表达式。

您期望EdgeWeightArray的大小是多少?您期望在增加numOfEdges时它会增长吗?如果是这样,则需要查看动态内存分配。即mallocrealloc

没有错误检查的简短示例:

int numOfEdges = 0;
int *EdgeWeightArray;
void addEdge(some parameters) {
    //SOME CODE
    numOfEdges++;
    EdgeWeightArray = realloc(EdgeWeightArray, numOfEdges * sizeof(EdgeWeightArray[0]));
}

09-29 21:55