gpt4 book ai didi

c - 在 main、C 中使用后面函数中的变量

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

我无法在主函数中打印 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; 行并未执行您认为它正在执行的操作。

最后,你的函数没有多大意义。您打算将 ROBXROBY 作为参数传递。这不会像你想象的那样起作用,但总的来说这并不是一个糟糕的主意。但是,当您创建也称为 ROBX 和 ROBY 的局部变量时。正如评论者所指出的,这将隐藏全局变量和参数,因此您最终只能修改那些本地定义的变量。

有两种方法可以解决此问题:

  1. 不要创建局部变量,也不要传递参数。直接修改全局变量即可。
  2. 仍然不要创建局部变量,并让您的函数接受两个 int * 参数。这将允许您在调用robot时传入全局变量,以便您可以以持久的方式修改这些参数。请参阅this询问更多详情。

无论哪种情况,您都需要实际调用您的机器人函数。

关于c - 在 main、C 中使用后面函数中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26723240/

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