二维数组de传入/返回/new

问题描述:

这完全是基础知识
对于数组指针的应用不熟,多练就好

场景是在迷宫求解
传入 和 返回 和 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];
}
上一篇:贪吃蛇的自动寻路算法 -BFS


下一篇:ROS-Melodic 安装全部指令列表