我无法在主函数中打印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;
}
}
答案 0 :(得分:2)
您的代码存在一些问题。
首先,你永远不会打电话给robot
,所以这些修改都不会发生。
另一方面,您不允许从函数返回多个值:行return ROBX, ROBY;
没有按照您的想法行事。
最后,你的功能并没有多大意义。您打算传递ROBX
和ROBY
作为参数。这不会像你想象的那样工作,但总的来说这并不是一个糟糕的想法。但是当您创建也称为ROBX
和ROBY
的局部变量时。正如评论者所指出的那样,这将隐藏全局变量和参数,因此您最终只会修改这些本地定义的变量。
有两种方法可以解决这个问题:
int *
参数。这将允许您在调用robot
时传入全局变量,因此您可以以持久的方式修改这些参数。有关详细信息,请参阅this问题。在任何一种情况下,您都需要实际调用您的robot
功能。