今天在写八皇后时遇到了一些小问题,下面整理一下。
二维数组初始化
用二阶指针来申请:
#include <stdio.h>
#include <malloc.h>
/*
这里只做申请
*/
void makeDoubleArray(int row, int col) {
int **array;
int i, j;
array = (int**)malloc(sizeof(int*) * row);
for(i = 0; i < row; i++) {
array[i] = (int *)malloc(sizeof(int*) * col);
for(j = 0; j < col; j++) {
printf("%p ", &array[i][j]);
if(j == col - 1) {
printf("\n");
}
}
}
for(i = 0; i < row; i++) {
free(array[i]);
}
free(array);
}
void main(void) {
makeDoubleArray(4, 8);
}
用二维数组指针申请
#include <stdio.h>
void makeArray(int row) {
int i;
int j;
int (*array)[8] = (int (*)[8])malloc(sizeof(int) * row * 8);
for(i = 0; i < row; i++) {
for(j = 0; j < 8; j++) {
printf("%d ", array[i][j]); //输出自然都是垃圾数据
if(j == 7) {
printf("\n");

本文探讨了在实现八皇后问题时遇到的二维数组动态申请与传参问题。详细介绍了如何使用二阶指针和二维数组指针进行初始化,并指出了使用二维指针方法的局限性。同时,通过错误示例分析了二维数组在函数间正确传参的注意事项,特别是int**与int(*)[8]类型的差异。

8655

被折叠的 条评论
为什么被折叠?



