Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C++实现C++中的分段错误_C++_Segmentation Fault - Fatal编程技术网

用C++实现C++中的分段错误

用C++实现C++中的分段错误,c++,segmentation-fault,C++,Segmentation Fault,我有个问题。我在C++上找到了一个花程序,它在很多语言中都是在线的IDE,每次我做了一个修改,确保它运行,当整个游戏结束后,我运行了几次。一切都很顺利。我在学校的Chromebook上运行这个。在家里,我在家里的笔记本电脑上开始了这个项目,并且不断地发现分割错误。这些错误是在我搬到家里的笔记本电脑后才开始发生的。我到处搜索,发现分段错误是当你的程序试图访问它自己没有的时候。我试着换一台Mac电脑,但没用。第二天,我又回到学校的Chromebook上,但它不起作用。我不知道这是因为我有一个10x1

我有个问题。我在C++上找到了一个花程序,它在很多语言中都是在线的IDE,每次我做了一个修改,确保它运行,当整个游戏结束后,我运行了几次。一切都很顺利。我在学校的Chromebook上运行这个。在家里,我在家里的笔记本电脑上开始了这个项目,并且不断地发现分割错误。这些错误是在我搬到家里的笔记本电脑后才开始发生的。我到处搜索,发现分段错误是当你的程序试图访问它自己没有的时候。我试着换一台Mac电脑,但没用。第二天,我又回到学校的Chromebook上,但它不起作用。我不知道这是因为我有一个10x10网格字符映射[10][10]={10x10 grid goes here},还是因为我从其他函数内部调用函数。请帮忙。下面的链接将向您发送我的回复代码


在Move函数中,测试按下了哪个WASD键,代码如下所示

if (PlayerMove == 'W' || 'w')
它的计算结果始终为true,因为“w”作为布尔值转换为true。这可能就是你的意思:

if (PlayerMove == 'W' || PlayerMove == 'w')
将来,您可能希望添加边界检测,这样就不会发生越界引用


注意:很多人都在评论你应该显式初始化玩家的位置。它们是正确的,您应该这样做,但是由于您在全局范围中声明了它们,因此它们肯定已经初始化为零。请看

刚刚写了一个很长的答案,但在我登录时没有保存,所以这里是简短的版本

您从未为玩家位置设置初始位置。这意味着当您分配变量PlayerX和PlayerY时,您只需从已经存在的变量中提取。有时候,这种方法很管用

因此,设置一个初始起始位置


您需要做的另一件事是限制网格之间的移动,因此我建议您每次更新玩家位置时使用%10

分段错误是未定义行为的可能表现之一另一种可能的表现,正如您已经看到的:工作正常。相对于数组,这可能是由于您索引超出了所述数组的边界。但是,如果看不到,就无法确定。欢迎使用堆栈溢出。一般来说,您应该发布最简单的完整示例本身,而不是指向它的链接。在这种情况下,您如何确保玩家不会离开地图?您还需要初始化玩家位置和收集的号码等变量。通常我会将您的代码从链接复制到问题,但是我不可能点击一个匿名链接,希望在另一边只找到等待我的代码。这解决了我的问题。我可以毫无错误地运行它。