首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >骑士围棋巡逻失误

骑士围棋巡逻失误
EN

Stack Overflow用户
提问于 2017-04-22 14:19:16
回答 2查看 44关注 0票数 0

我正在学习C++,我的代码有错误,我不知道?

骑士巡逻//在这里输入代码

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

using namespace std;

#define maxn 10

void ThuNuocDiTiepTheo(int i, int x, int y, int *q);
void InBanCo(int n);
void XoaBanCo(int n);

int BanCo[maxn][maxn];
int dx[8] = { 2,1,-1,-2,-2,-1,1,2 };
int dy[8] = { -1,-2,-2,-1,1,2,2,1 };
int n = 8;


void ThuNuocDiTiepTheo(int i, int x, int y, int *q) {
    int u, v, *q1;
    int k = 0;

    do {
        *q1 = 0;
        u = x + dx[k];
        v = y + dy[k];

        if ((u >= 0) && (u < n) && (v >= 0) && (v < n) && (BanCo[u][v] = 0)) 
        {
            BanCo[u][v] = i;
            if (i < n*n) {
            ThuNuocDiTiepTheo(i+1,x,y,q1);
            if (*q1 == 0) {
                BanCo[u][v] = 0;
            }
            else {
                *q1 = 1;
            }
        }
        k = k + 1;
    }

    } while ((*q1 == 0) && (k < 8));

    *q = *q1;
}

void XoaBanCo(int n) {
    for (int i = 0; i < n - 1;i++) {
        for (int j = 0; j < n - 1;j++) {
            BanCo[i][j] = 0;
        }
    }
}

void InBanCo(int n) {
     for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - 1; j++) {
            if (BanCo[i][j] < 10) {
                cout << " " << BanCo[i][j];
            }
            else { 
                cout << " " << BanCo[i][j];
            }

        }
        cout << "\n";
    }
}

void main() {
    int *q = 0;
    cout << "Nhap vao kich thuoc ban co: ";
    cin >> n; cout << "\n";
    XoaBanCo(n);
    cout << "\n";
    BanCo[0][0] = 1;
    ThuNuocDiTiepTheo(2,0,0,q);
    cout << "In ra ban co: ";
    InBanCo(n);

    system("pause");
}

这是错误

严重性代码描述项目文件行抑制状态错误C4700未初始化的局部变量“q1”使用

EN

回答 2

Stack Overflow用户

发布于 2017-04-22 14:24:29

你的问题是:

代码语言:javascript
复制
void ThuNuocDiTiepTheo(int i, int x, int y, int *q) {
    int u, v, *q1;
    int k = 0;

    do {
        *q1 = 0;

您正在声明一个指针q1,但是它指向一些随机内存,因为您还没有初始化它。

*q1 = 0;将0写入这个随机内存位置。

您需要为该整数分配内存,然后使用新的删除运算符重新定位它。

请注意,像这样管理内存不是一个好主意,因为有更好和更安全的方法来做事情。

票数 1
EN

Stack Overflow用户

发布于 2017-04-22 14:35:02

int u,v,*q1;

所有这些变量都没有初始化。

*q1 = 0;

*q1试图取消引用一个未初始化的指针,之后您也没有给该指针分配值。这会导致未定义行为

您的变量名是完全无法描述的,您的函数名使用的是一种我甚至不认识的语言,因此不可能知道您打算在这里做什么。然而,即使没有这些知识,我也可以给你一个建议:不要使用指针。重构所有要使用std::vector的内容。

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

https://stackoverflow.com/questions/43560269

复制
相关文章

相似问题

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