首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >程序运行时收到退出代码-1073741819

程序运行时收到退出代码-1073741819
EN

Stack Overflow用户
提问于 2021-07-28 23:59:49
回答 1查看 43关注 0票数 0

我正在用C语言编写一个tic-tac-toe程序。我的代码如下所示。

代码语言:javascript
运行
复制
#include <stdio.h>
#include <conio.h>

char evaluateWinConditions(char board[3][3]);

int main(void)
{
    puts("---");
    puts("---");
    puts("---");

    char board[3][3] = {{"-"}}; // board

    char key = 0; // stores key presses

    // stores position of mouse pointer
    int row = 1;
    int column = 1;

    // stores player turn
    int player = 1;

    printf("\033[%d;%dH", row, column);

    while (evaluateWinConditions(board) == 0) {
        key = _getch();

        switch (key) {
            case 'a':
                column -= 1;
                break;
            case 'w':
                row -= 1;
                break;
            case 'd':
                column += 1;
                break;
            case 's':
                row += 1;
                break;
            case ' ':
                if (player == 1) {
                    printf("%c", 'X');

                    board[row][column] = 'X';

                    player = 2;
                }
                else {
                    printf("%c", 'O');

                    board[row][column] == 'O';

                    player = 1;
                }

                break;
        }

        printf("\033[%d;%dH", row, column);
    }

    printf("\033[5;1H");

    if (evaluateWinConditions(board == 1)) printf("Player 1 wins.");
    else printf("Player 2 wins.");
}

char evaluateWinConditions(char board[3][3])
{
    if (board[0][0] == board[0][1] == board[0][2] ||
        board[1][0] == board[1][1] == board[1][2] ||
        board[2][0] == board[2][1] == board[2][2] ||
        board[0][0] == board[1][1] == board[2][2] ||
        board[0][2] == board[1][1] == board[2][0]) {
        if (board[0][0] == "X") return 1;
        else return 2;
    }
    else {
        return 0;
    }
}

当我编译程序时,没有任何错误。但是,当我运行该程序时,我收到一个代码为-1073741819的运行时错误。我使用的是Windows 10 64位和Visual Studio 2019。当我运行程序时,这个错误大约在一秒钟后出现。当我在Visual Studio中调试程序时,在第74行收到一个错误:抛出异常:读取访问冲突;board in nullptr“

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-29 01:07:07

异常的可能原因是函数调用evaluateWinConditions(board == 1)中无意义的比较board == 1的结果。board == 1比较是一种约束冲突(在指针和非null指针常量的整数之间使用相等运算符),其计算结果可能是int值0,而int值0(这里不是null指针常量)可能正在以实现定义的方式转换为char (*)[3]类型的null指针(由于缺乏显式强制转换,这是另一个约束冲突),以成为evaluateWinConditions函数中board参数的值。evaluateWinConditions函数正在取消引用空指针,从而导致访问冲突异常。

在原始代码中还有很多其他错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68563716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档