骑士去巡逻的错误

问题描述:

我正在学习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' 使用

你的问题在这里:

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

    do { 
     *q1 = 0; 

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

*q1 = 0;在这个随机存储单元中写入0。

您需要为该整数分配内存,然后使用newdelete运算符来释放内存。

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

int u, v, *q1; 

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

*q1 = 0; 

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

你的变量名称完全是不伦不类的,你的函数名是用一种我甚至都不知道的语言,所以不可能知道你打算在这里做什么。然而,即使没有这些知识,我可以给你的建议是:不要使用指针。重构所有使用std::vector