计算不同功能中保留的内存的功能

时间:2019-01-23 15:46:01

标签: c pointers memory malloc

我有两个函数,一个函数创建一个双精度数组,用零填充并为其保留内存。另一个函数“ 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;
}

1 个答案:

答案 0 :(得分:0)

当仅具有指向该内存的指针时,您根本无法得出分配在某处的内存(m)的大小。您需要单独传递尺寸。