Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.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++;for循环中途崩溃 我刚刚开始学习C++,我现在把它用在循环中,每次执行它时都会崩溃(它是大代码的一部分) void placeItem() { 内部定居者=20,城堡=5,塔楼=10,矿井=10,E=100; int player1Settler=0,player1Castle=0,player1Tower=0,player1Mine=0; int player2Settler=0,player2Castle=0,player2Tower=0,player2Mine=0; 整数骰子,x,y; currentBoardStatus(); 您的代码可能因为以下原因而崩溃 string gameBoard(int i, int j) { string arr[10][10]; return arr[i][j]; }_C++_For Loop - Fatal编程技术网

C++;for循环中途崩溃 我刚刚开始学习C++,我现在把它用在循环中,每次执行它时都会崩溃(它是大代码的一部分) void placeItem() { 内部定居者=20,城堡=5,塔楼=10,矿井=10,E=100; int player1Settler=0,player1Castle=0,player1Tower=0,player1Mine=0; int player2Settler=0,player2Castle=0,player2Tower=0,player2Mine=0; 整数骰子,x,y; currentBoardStatus(); 您的代码可能因为以下原因而崩溃 string gameBoard(int i, int j) { string arr[10][10]; return arr[i][j]; }

C++;for循环中途崩溃 我刚刚开始学习C++,我现在把它用在循环中,每次执行它时都会崩溃(它是大代码的一部分) void placeItem() { 内部定居者=20,城堡=5,塔楼=10,矿井=10,E=100; int player1Settler=0,player1Castle=0,player1Tower=0,player1Mine=0; int player2Settler=0,player2Castle=0,player2Tower=0,player2Mine=0; 整数骰子,x,y; currentBoardStatus(); 您的代码可能因为以下原因而崩溃 string gameBoard(int i, int j) { string arr[10][10]; return arr[i][j]; },c++,for-loop,C++,For Loop,及 x和y的值介于1和10之间,但arr的大小是10,其最大有效索引是9。因此,如果x或y是10(或两者都是),它们将访问未定义的内存 除此之外,您的代码还有许多缺陷,如: dice=4当想要比较该值时(正如@KeithSmith指出的那样,实际上将值4分配给dice) 您在int main()中创建string arr,从不使用它,而是在string gameBoard()中声明另一个string arr,然后从中返回索引(未定义) 在for循环中放置一个断点,按F5 15次,然后按next语

x
y
的值介于1和10之间,但arr的大小是10,其最大有效索引是9。因此,如果
x
y
是10(或两者都是),它们将访问未定义的内存

除此之外,您的代码还有许多缺陷,如:

  • dice=4
    当想要比较该值时(正如@KeithSmith指出的那样,实际上将值4分配给
    dice
  • 您在
    int main()
    中创建
    string arr
    ,从不使用它,而是在
    string gameBoard()中声明另一个
    string arr
    ,然后从中返回索引(未定义)

  • 在for循环中放置一个断点,按F5 15次,然后按next语句按钮并逐行执行直到它退出。您应该会发现问题。
    gameBoard(x,y)
    这是否返回对
    std::string
    的引用?如果您将下拉框链接发布到整个代码,我将对其进行调试。注意:If(dice=4…和If)(dice=6…分别为dice分配值4和6。您需要if(dice==4…等)。标准的编码技术是始终将常量放在相等比较的第一位。if(4==dice…,因为if(4=dice)是非法的,并且会产生编译错误。此外,x和y似乎在1到N的范围内。这是gameboard期望的范围吗(x,y)?另外,你有没有打电话给其他地方的srand(…)来随机化rand()?gameBoard定义中有什么?顺便说一句,问题可能就在那里?非常感谢,我不敢相信我忽略了这一点!gameBoard函数到底要做什么?:/gameBoard每次运行时,它都声明一个字符串的2D数组,并从该数组返回一个元素?您应该将
    字符串arr
    设置为全局数组,并在
    ga中使用它meBoard()
    。另外,在获取索引之前进行一些验证也不是一个坏主意:)
    string arr[10][10];//全局
    string&gameBoard(int i,int j){return arr[i][j];}
    string gameBoard(int i, int j)
    {
        string arr[10][10];
        return arr[i][j];
    }
    
    x = rand() % 10 + 1;
    y = rand() % 10 + 1;