Функция, которая вычисляет память, зарезервированную в другой функции - PullRequest
0 голосов
/ 23 января 2019

У меня есть две функции, одна из которых создает двойной массив, заполняет его нулями и резервирует для него память. Другая функция 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 голосов
/ 23 января 2019

Вы просто не можете получить размер памяти (м), выделенный где-то, когда имеется только указатель на эту память.Вам необходимо отдельно указать размер (ы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...