我正在学习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”使用
发布于 2017-04-22 14:24:29
你的问题是:
void ThuNuocDiTiepTheo(int i, int x, int y, int *q) {
int u, v, *q1;
int k = 0;
do {
*q1 = 0;您正在声明一个指针q1,但是它指向一些随机内存,因为您还没有初始化它。
行*q1 = 0;将0写入这个随机内存位置。
您需要为该整数分配内存,然后使用新的和删除运算符重新定位它。
请注意,像这样管理内存不是一个好主意,因为有更好和更安全的方法来做事情。
发布于 2017-04-22 14:35:02
int u,v,*q1;
所有这些变量都没有初始化。
*q1 = 0;
*q1试图取消引用一个未初始化的指针,之后您也没有给该指针分配值。这会导致未定义行为。
您的变量名是完全无法描述的,您的函数名使用的是一种我甚至不认识的语言,因此不可能知道您打算在这里做什么。然而,即使没有这些知识,我也可以给你一个建议:不要使用指针。重构所有要使用std::vector的内容。
https://stackoverflow.com/questions/43560269
复制相似问题