我无法在主函数中打印 ROBX 和 ROBY 变量。这是我的程序的一小部分,我不知道我做错了什么。谢谢!
#include <stdio.h>
#include <time.h>
#define ROW 8
#define COLUMN 8
int robot (int m[ROW][COLUMN], int ROBX, int ROBY);
int ROBX;
int ROBY;
int main(void)
{
printf("%d %d\n", ROBX, ROBY);
return 0;
}
int robot (int m[ROW][COLUMN], int ROBX, int ROBY)
{
// ensure different output each time program is run
srand ( time(NULL) );
// Pick a random spot to place the robot
int placed = 0;
int ROBX;
int ROBY;
while(placed == 0)
{
int t = rand() % ROW;
int y = rand() % COLUMN;
if(m[t][y] == 0)
{
m[t][y] = -2;
placed = 1;
ROBX = t;
ROBY = y;
}
return ROBX, ROBY;
}
}
最佳答案
您的代码存在几个问题。
一方面,您永远不会调用robot
,因此不会发生对变量的任何修改。
另一方面,您不允许从函数返回多个值:return ROBX, ROBY;
行并未执行您认为它正在执行的操作。
最后,你的函数没有多大意义。您打算将 ROBX
和 ROBY
作为参数传递。这不会像你想象的那样起作用,但总的来说这并不是一个糟糕的主意。但是,当您创建也称为 ROBX 和 ROBY 的局部变量时。正如评论者所指出的,这将隐藏全局变量和参数,因此您最终只能修改那些本地定义的变量。
有两种方法可以解决此问题:
- 不要创建局部变量,也不要传递参数。直接修改全局变量即可。
- 仍然不要创建局部变量,并让您的函数接受两个
int *
参数。这将允许您在调用robot
时传入全局变量,以便您可以以持久的方式修改这些参数。请参阅this询问更多详情。
无论哪种情况,您都需要实际调用您的机器人
函数。
关于c - 在 main、C 中使用后面函数中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26723240/