怎么用 malloc 生成二维数组
int *Cross = (int*)malloc(sizeof(int)*N); int **total = (int **)malloc(sizeof(Cross)*N);
我的第一想法就是上面这般。但是很遗憾不行。。。
我想用malloc 生成个二维数组
就像int total[N][N] 这样一般的。
#include<stdio.h> int main(void) { int i,j; int (*p)[2] = (int (*)[2])malloc(sizeof(int [2])*2); for(i = 0; i<2; i++){ for(j = 0; j<2; j++){ printf("输入第%d行第%d个数字:",i+1,j+1); scanf("%d",&p[i][j]); } } for(i = 0; i<2; i++){ for(j = 0; j<2; j++){ printf("%d ",p[i][j]); } printf("\n"); } system("pause"); return 0; }
#include <stdio.h> #include <stdlib.h> int main(void) { unsigned long i, j, m, n; int *p = NULL; scanf("%ld %ld", &m, &n); fflush(stdin); p = malloc(m * n * sizeof(int)); if(p == NULL) { printf("malloc error!\n"); exit(1); } for(i = 0; i < m; i++) { for(j = 0; j < n; j++) { printf("输入第%ld行第%ld个数字:", i + 1, j + 1); scanf("%d", p + i * m + j); fflush(stdin); } } for(i = 0; i < m; i++) { for(j = 0; j < n; j++) { printf("%d ", *(p + i * m + j)); } printf("\n"); } free(p); return 0; }