骑士去巡逻的错误
问题描述:
我正在学习C++,我的代码有错误,我不知道吗?骑士去巡逻的错误
骑士去巡逻 //此处输入代码
#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' 使用
答
int u, v, *q1;
这些变量都没有被初始化。
*q1 = 0;
*q1
尝试取消引用一个未初始化的指针,你也没有分配一个值之后。这会导致未定义的行为。
你的变量名称完全是不伦不类的,你的函数名是用一种我甚至都不知道的语言,所以不可能知道你打算在这里做什么。然而,即使没有这些知识,我可以给你的建议是:不要使用指针。重构所有使用std::vector
。