gpt4 book ai didi

const 参数在数组定义后发生变化

转载 作者:太空宇宙 更新时间:2023-11-04 07:31:15 26 4
gpt4 key购买 nike

我遇到了一个我认为非常奇怪的问题。我有一个具有以下原型(prototype)的函数:

void generateNodes(const int maxX, const int maxY, node nodes[]);

作为此函数中的第一件事,我定义了一个二维短裤数组,我将其用作 bool 值。但是当我调用这个函数时,maxY 的值变成了一个很大的值。有问题的代码如下:

void generateNodes(const int maxX, const int maxY, node nodes[]){
int i, currentX, currentY;

short used[MAX_NODES][MAX_NODES];

//Generate the nodes
for(i = 0; i < MAX_NODES; i++){
currentX = randomNumber(0,maxX);
currentY = randomNumber(0,maxY);

nodes[i].color = 0;
nodes[i].numberOfConnections = 0;
nodes[i].id = i;
nodes[i].distanceFromStart = NOT_SET;
nodes[i].parent = NULL;

if(!used[currentX][currentY]){
nodes[i].x = currentX;
nodes[i].y = currentY;

used[currentX][currentY] = 1;
} else {
i--;
}
}

int numberOfConnections, j, currentNeighbor;

//Generate the connections
for(i = 0; i < MAX_NODES; i++){
numberOfConnections = randomNumber(1,5); //Between one and five outgoing connections

for(j = 0; j < numberOfConnections; j++){

currentNeighbor = randomNumber(0,19); //Select the neighbor

while(currentNeighbor == i){
currentNeighbor = randomNumber(0,19); //Try again while the selected is self
}

nodes[i].canReach[++(nodes[i].numberOfConnections)] = &nodes[currentNeighbor];

nodes[currentNeighbor].canReach[++(nodes[currentNeighbor].numberOfConnections)] = &nodes[i];
}
}
}

MAX_NODES 被定义为 20。

有谁知道为什么会发生这种情况?

最佳答案

很可能 ... 中的代码正在访问 used 的末尾,导致参数被破坏。没有代码当然没法说。

关于const 参数在数组定义后发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13608678/

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