我学习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未初始化的本地变量&#39; q1&#39;使用
答案 0 :(得分:1)
你的问题在这里:
void ThuNuocDiTiepTheo(int i, int x, int y, int *q) {
int u, v, *q1;
int k = 0;
do {
*q1 = 0;
您正在声明一个指针q1
,但它指向一些随机内存,因为您尚未对其进行初始化。
行*q1 = 0;
将0写入此随机存储器位置。
您需要为该整数分配内存,然后使用new和delete运算符解除分配。
请注意,像这样管理内存并不是一个好主意,因为有更好,更安全的方法来做事。
答案 1 :(得分:0)
int u, v, *q1;
这些变量都没有初始化。
*q1 = 0;
*q1
尝试取消引用未初始化的指针,之后您也没有为其指定值。这会导致未定义的行为。
你的变量名称是完全不明白的,你的函数名称是我甚至不认识的语言,所以你不可能知道你打算在这里做什么。然而,即使没有那些知识,我当然可以给你的一个建议是:不要使用指针。重构所有内容以使用std::vector
。