// 动态开辟一个二维数组 #include <stdio.h> #include <stdlib.h> int main() { int i = 0; int j = 0; int line = 0; int row = 0; int **p = NULL; printf("输入行数:"); scanf("%d", &line); printf("\n"); printf("输入列数:"); scanf("%d", &row); printf("\n"); // 申请全部行的首指针 p = (int **)malloc(line * sizeof(int *)); if (NULL == p) { return; } for (i = 0; i < line; i++) { //申请列的指针 *(p + i) = (int *)malloc(row *sizeof(int) ); if (*(p + i) == NULL) { return; } } // 初始化数组 for (i = 0; i < line; i++) { for(j = 0; j < row; j++) { p[i][j] = i + 1; } } // 输出 for (i = 0; i < line; i++) { for(j = 0; j < row; j++) { printf("%d ", p[i][j]); } } printf("\n"); // 释放内存 for (i = 0; i < line; i++) { free(*(p + i)); p[i] = NULL; } free(p); p = NULL; return 0; }
原文地址:http://blog.csdn.net/zhaoyaqian552/article/details/44982149