怎么用 malloc 生成二维数组
int *Cross = (int*)malloc(sizeof(int)*N); int **total = (int **)malloc(sizeof(Cross)*N);
我的第一想法就是上面这般。但是很遗憾不行。。。
我想用malloc 生成个二维数组
就像int total[N][N] 这样一般的。
int *Cross = (int*)malloc(sizeof(int)*N); int **total = (int **)malloc(sizeof(Cross)*N);
2014-12-05 18:55
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define N 10
int main(void) {
int *Cross = (int*)malloc(sizeof(int) * N);
int **total = (int **)malloc(sizeof(Cross) * N);
free(total);
free(Cross);
return 0;
}

2014-12-05 20:31
int *Cross = (int*)malloc(sizeof(int)*N); int **total = (int **)malloc(sizeof(Cross)*N);
2014-12-05 20:45

2014-12-05 20:56
程序代码:#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;
}
2014-12-06 12:48

2014-12-08 15:11
程序代码:
#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;
}

2014-12-08 20:23
2014-12-08 20:48
2014-12-08 20:52
2014-12-08 20:55