我有两个函数,一个函数创建一个双精度数组,用零填充并为其保留内存。另一个函数“ noarr”应该用来计算我在“ myarr”函数中为数组保留的内存。我很确定我已经成功用零填充了数组, 但是我不确定如何从另一个函数访问数组?我是在正确的轨道上吗?
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
void noarr(double *** myarr(int n, int m));
double** myarr(int n, int m);
double** myarr(int n, int m){
int i, j;
double ** A;
A = malloc(sizeof(double*)*n*m);
for(i = 0; i < n; i++){
A[i] = malloc(m*sizeof(double));
for(j = 0; j < m; j++){
A[i][j] = 0;
}
}
return A;
}
void noarr(double *** myarr(int n, int m)){
printf("%d\n", sizeof(myarr));
}
int main(int argc, const char * argv[]){
int i,j;
int n,m;
double (*A)[n];
A = myarr(n,m);
printf("%.1f %.1f \n",A[0][0],A[2][9]);
noarr(A);
return 0;
}
答案 0 :(得分:0)
当仅具有指向该内存的指针时,您根本无法得出分配在某处的内存(m)的大小。您需要单独传递尺寸。