使用main,C中后面函数中的变量
我很难在主函数中打印ROBX和ROBY变量。这只是我计划的一小部分,我不知道我做错了什么。谢谢使用main,C中后面函数中的变量,c,function,printf,C,Function,Printf,我很难在主函数中打印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, ROB
#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;
}
}
#包括
#包括
#定义第8行
#定义第8列
int robot(int m[行][列]、int ROBX、int ROBY);
int-ROBX;
内罗比;
内部主(空)
{
printf(“%d%d\n”,ROBX,ROBY);
返回0;
}
int robot(int m[行][列],int ROBX,int ROBY)
{
//确保每次运行程序时都有不同的输出
srand(时间(空));
//选择一个随机点来放置机器人
int=0;
int-ROBX;
内罗比;
while(placed==0)
{
int t=rand()%行;
int y=rand()%列;
如果(m[t][y]==0)
{
m[t][y]=-2;
放置=1;
ROBX=t;
ROBY=y;
}
返回ROBX,ROBY;
}
}
您的代码有几个问题
首先,您从不调用robot
,因此对变量的任何修改都不会发生
另一方面,不允许从函数返回多个值:行returnrobx,ROBY代码>没有做您认为它正在做的事情
最后,您的函数没有多大意义。您打算将ROBX
和ROBY
作为参数传入。这不会像你想象的那样奏效,但总的来说这不是一个糟糕的主意。但是当您创建局部变量时,也被称为ROBX
和ROBY
。正如评论者所指出的,这将隐藏全局变量和参数,因此最终只修改那些本地定义的变量
有两种方法可以解决此问题:
不要创建局部变量,也不要传递参数。只需直接修改全局变量
仍然不要创建局部变量,让函数接受两个int*
参数。这将允许您在调用robot
时传入全局变量,以便您可以持久地修改这些参数。有关更多详细信息,请参阅问题
在这两种情况下,您都需要实际调用robot
函数。那么您会遇到什么错误。您的程序不应该在某个时候调用robot()
函数吗?逗号操作符是如何工作的<代码>int-ROBX;内罗比robot()
中的code>隐藏这些变量的全局定义<代码>返回ROBX,ROBY代码>不会做你认为它会做的事情。