gpt4 book ai didi

c - 在C中使用可变参数全局定义数组

转载 作者:行者123 更新时间:2023-11-30 14:47:57 25 4
gpt4 key购买 nike

代码如下:

int EdgeCount = 0;
int numOfEdges = 0;

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

int EdgeWeightArray[numOfEdges]; // error

我希望稍后使用具有可变参数的全局数组,但我无法这样做,因为没有 #define 我们无法定义全局数组参数;并且 #define 不是一个变量。在我的代码中,numOfEdges 是变量,我无法使其保持不变。

最佳答案

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

您期望 EdgeWeightArray 的大小是多少?当您增加 numOfEdges 时,您期望它会增长吗?如果是这样,您就需要研究动态内存分配;即mallocrealloc

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

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

关于c - 在C中使用可变参数全局定义数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50858475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com