user-0 提问: 不知道哪里错了 求大佬！！！

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: 引用 3 楼 棉猴的回复:定义数组时，数组的维度必须是常量表达式。因为m和n是变量，所以 int arr[m][n]; 代码需要修改。使用new关键字进行动态分配。 #include <stdio.h> int main() { 	int m, n; 	printf("需要输入m行的值："); 	scanf("%d", &m); 	printf("需要输入n列的值："); 	scanf("%d", &n);  	//int arr[m][n]; //----------------以下代码为动态分配，指向指针的指针，可以看成是二维数组----------------- 	int** arr = new int*[m]; 	int i, j; 	for (i = 0; i < m; i++) 	{ 		arr[i] = new int[n]; 	} 	//循环输入；  	for (i = 0; i<m; i++) 	{ 		for (j = 0; j<n; j++) 		{ 			printf("请输入第%d行第%d列的值：", i + 1, j + 1); 			scanf("%d", &arr[i][j]); 		} 	} 	//循环输出；  	for (i = 0; i<m; i++) 	{ 		for (j = 0; j<n; j++) 		{ 			printf("%d\t", arr[i][j]); 		} 		printf("\n"); 	}  	int b[100]; 	for (i = 0; i<n; i++)//----m改为n------ 	{ 		for (j = 0; j<m; j++)//------n改为m------ 		{ 			printf("%d\t", arr[j][i]);//-----添加\t----------- 		} 		printf("\n");//-------------添加换行----------- 	} //------------以下代码为释放动态分配的空间------------- 	delete[] *arr; 	delete[] arr; 	return 0; } VS2015调试结果如下所示  对于二维数组的使用，请参考《C++中二维数组的使用》和《C++二维数组》 希望能够帮到你！ 谢谢谢谢谢谢谢谢谢谢谢谢

user: user-2
content: /******************************************************************** 	description: 动态申请二维数组 	author: wowpH 	csdnid: pfdvnah 	date  : 2019-11-9 15:38:25 ********************************************************************/ #include <stdio.h> #include <stdlib.h> int main(void) { 	int row, col; 	printf("输入行数和列数："); 	scanf_s("%d %d", &row, &col); 	 	int** matrix = NULL;// 初始化为NULL  	// 消除C6085和C6086警告 	if (row <= 0 || col <= 0) { 		printf("行数或列数不合法！\n"); 		exit(-1); 	}  	// 动态申请内存 	matrix = (int**)malloc(row * sizeof(int*)); 	 	// 消除C6011警告 	if (NULL == matrix) { 		printf("无法动态申请内存！\n"); 		exit(-1); 	}  	for (int i = 0; i < row; ++i) { 		matrix[i] = (int*)malloc(col * sizeof(int));  		// 消除C6011警告 		if (NULL == matrix[i]) { 			printf("无法动态申请内存！\n"); 			exit(-1); 		} 	}  	// 给二维数组赋值 	for (int i = 0; i < row; ++i) { 		for (int j = 0; j < col; ++j) { 			matrix[i][j] = i * col + j; 		} 	}  	// 输出二维数组 	for (int i = 0; i < row; ++i) { 		for (int j = 0; j < col; ++j) { 			printf("%2d", matrix[i][j]); 			putchar((j < col - 1) ? ' ' : '\n'); 		} 	} 	 	// 释放内存 	for (int i = 0; i < row; ++i) { 		free(matrix[i]); 	} 	free(matrix); 	return 0; }

user: user-3
content: 释放空间用下面的代码 for (i = 0; i < m; ++i) 	{ 		delete[] arr[i]; 	} 	delete[] arr;

user: user-3
content: 定义数组时，数组的维度必须是常量表达式。因为m和n是变量，所以 int arr[m][n]; 代码需要修改。使用new关键字进行动态分配。 #include <stdio.h> int main() { 	int m, n; 	printf("需要输入m行的值："); 	scanf("%d", &m); 	printf("需要输入n列的值："); 	scanf("%d", &n);  	//int arr[m][n]; //----------------以下代码为动态分配，指向指针的指针，可以看成是二维数组----------------- 	int** arr = new int*[m]; 	int i, j; 	for (i = 0; i < m; i++) 	{ 		arr[i] = new int[n]; 	} 	//循环输入；  	for (i = 0; i<m; i++) 	{ 		for (j = 0; j<n; j++) 		{ 			printf("请输入第%d行第%d列的值：", i + 1, j + 1); 			scanf("%d", &arr[i][j]); 		} 	} 	//循环输出；  	for (i = 0; i<m; i++) 	{ 		for (j = 0; j<n; j++) 		{ 			printf("%d\t", arr[i][j]); 		} 		printf("\n"); 	}  	int b[100]; 	for (i = 0; i<n; i++)//----m改为n------ 	{ 		for (j = 0; j<m; j++)//------n改为m------ 		{ 			printf("%d\t", arr[j][i]);//-----添加\t----------- 		} 		printf("\n");//-------------添加换行----------- 	} //------------以下代码为释放动态分配的空间------------- 	delete[] *arr; 	delete[] arr; 	return 0; } VS2015调试结果如下所示  对于二维数组的使用，请参考《C++中二维数组的使用》和《C++二维数组》 希望能够帮到你！

user: user-4
content: 最后输出的那个循环错了，内外层循环换一下就好了

user: user-4
content: int m,n; printf("需要输入m行的值："); scanf("%d",&m);  printf("需要输入n列的值："); scanf("%d",&n);   int arr[m][n]; int i,j; //循环输入；  for(i=0;i<m;i++) { for(j=0;j<n;j++) { printf("请输入第%d行第%d列的值：",i+1,j+1); scanf("%d",&arr[i][j]); } } //循环输出；  for(i=0;i<m;i++) { for(j=0;j<n;j++) { printf("%d\t",arr[i][j]); } printf("\n"); }  int b[100]; for(j=0;j<n;j++) { for(i=0;i<m;i++) { printf("%d ",arr[j][i]); } }