问题描述:
这完全是基础知识
对于数组指针的应用不熟,多练就好
场景是在迷宫求解
传入 和 返回 和 new 二维数组指针
解决方案:
以数组 int a[m][n] 为例
//返回
return (*p)[n]
//new
int (*p)[n];
p=new int[m][n]
//只需关心 第一行 声明 和最后一行 返回 即可
//向返回二维数组的函数 createMg() 传入二维数组source[M][M] 的指针
//返回的是mg[M+2][M+2] 的指针
//M是常数
const int M=8;
int createMg(int source[][M]){
//new 迷宫的二维数组 mg
int(* mg)[M + 2];
mg = new int[M + 2][M + 2];
//生成四面围墙
//生成上下两面围墙
for (int i = 0; i < M + 2; i++) {
mg[0][i] = wall;
mg[M + 2 - 1][i] = wall;
}
//填充左右两面围墙
for (int i = 1; i < M + 1; i++) {
mg[i][0] = wall;
mg[i][M + 2 - 1] = wall;
}
//接下来是填充迷宫内容
for (int i = 0; i < M; i++) {
for (int j = 0; j < M; j++) {
mg[i + 1][j + 1] = source[i][j];
}
}
return (*mg)[M+2];
}