gpt4 book ai didi

c - 当作为函数指针传递时,二维数组会充满垃圾

转载 作者:行者123 更新时间:2023-11-30 16:02:56 25 4
gpt4 key购买 nike

我在 main() 函数中声明了这个数组:

int   VISITED[9][9]={{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0}};

它被传递给一个名为 qneighbor 的函数

qneighbor (5,5,1, 0, &pawn_positions, &PAWNS, WALLH, WALLV, &VISITED);

qneighbor 签名如下所示:

CELL* qneighbor( int root_row, int root_col, int p, int dist, struct GameTable* PAWN_POSITIONS, int (*PAWNS)[9][9], int WALLH[8][9], int WALLV[9][8], int (*VISITED)[9][9]){...}

但是,在调试时,我发现在第五行之后,在传递给 qneighbor 之后(在执行任何命令之前),它立即被垃圾填满。可能出了什么问题?

最佳答案

您的代码似乎没有特定问题。
顺便说一句,正如 bcsanches 提到的,qneighbor 的参数 int (*VISITED)[9][9]是一个指向 int[9][9] 的指针。
为了访问其元素,VISITED 本身必须被解引用为(*已访问)[ i ][ j ]
如果你写VISITED[ i ][ j ],它代表一个指针,而不是一个int。
因此,如果您编写 printf( "%d", VISITED[i][j] ) 来确认该值,则会打印一个 int 类型的指针值(地址),它看起来是一个垃圾。

关于c - 当作为函数指针传递时,二维数组会充满垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4592548/

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