【发布时间】:2022-01-01 10:48:48
【问题描述】:
所以我正在使用数组编写一个蛇游戏,我必须更改行和列的值,而不是创建副本,因此我使用的是指针。
void pointerset(int *rowPtr,int *colPtr){
*rowPtr=rand()%25;
*colPtr=rand()%64;
}
void create_snake(int *rowPtr,int *colPtr,int row,int column,int x){
pointerset(rowPtr,colPtr);
printf("%d %d",row,column);
if(board[row][column]==1){
create_snake(rowPtr,colPtr,row,column,x);
}else if(board[row][column]==0){
board[row][column]=x;
}else{
create_snake(rowPtr,colPtr,row,column,x);
}
}
int main(){
int row=0,column=0;
int *rowPtr;
rowPtr=&row;
int *colPtr;
colPtr=&column;
create_snake(rowPtr,colPtr,row,column,x);
}
我需要更改这些变量的值,并检查它们是否在我想要的位置。我有一个功能可以在游戏板上创建我的蛇。
创建snake函数在这里,行和列也有参数,这样我就可以在数组上使用它们并进行检查,但我也使用了指针,所以我会在之前更改行和列的值使用实际的行和列
为了给行和列提供随机数,还有另一个函数。
我试图查看变量值的变化,因此我使用了一个
printf("%d %d",row,column);
当我在函数 create_snake() 中使用它时,它给我 0 0 用于行和列,当我在 main 函数 create_snake() 下使用这个 printf 时,在函数工作和停止后,它给我随机数 i'我创建了,而不是 0 0,但我需要它们在函数工作时进行更改。我根本无法解决使用指针失败的地方。
我创建了函数pointerset(),因为如果我只是在写作
*rowPtr=rand()%25;
*colPtr=rand()%64;
到函数 create_snake() 它不起作用。
【问题讨论】:
-
函数的
row和col参数是原始值的副本,但通过指针访问它们会获取或设置原始值 i> 价值观。所以在函数中,board[row][column]仍然是board[0][0]。 -
那我该如何改变这种情况呢? @WeatherVane
-
你需要改变你的算法
-
我不明白你为什么将
row和column传递给函数以及指向它们的指针。您可以从函数中删除row和column参数,并使用*rowPtr和*colPtr。 -
你的意思是你不能用
board[*rowPtr][*colPtr]索引数组?在算法方面,我认为您应该在做任何其他事情之前首先确定棋盘大小。这是一个纠结。