2016-07-02 6 views
0

Так что я пытаюсь выделить массив для хранения матрицы поплавков. значения передаются в int (строки и столбцы), а функция - указатель. так это определение моей функции:динамическое распределение массива для матрицы

float *matrix(int rows,int cols) 
{ 
    int i=0; 
    float *m=NULL; 
    m=(float *)malloc(rows*sizeof(int)); 
    for (i=0;i<rows;i++) 
    { 
     m[i]=(float*)malloc(cols*sizeof(int)); 
    } 
} 

У меня такое чувство, что это неправильно. Я также получаю сообщение об ошибке при попытке запустить. где именно проблема? должен ли int быть float вместо этого?

редактировать ****

float *matrix(int rows,int cols) 
{ 
    int i=0; 
    float **m=NULL; 
    m=(float *)malloc(rows*sizeof(float)); 
    for (i=0;i<rows;i++) 
    { 
     m[i]=(float *)malloc(cols*sizeof(float)); 
    } 
} 

хорошо, если таНос не работает должным образом и не я wan't вернуть NULL. так должен быть этот код здесь, правильно?

if(m[i]==NULL) 
{ 
    return NULL; 
} 
+0

Символ 'всплывают *' ISN» t массив 'float *'. – tkausl

ответ

1
int i=0; 
    float **m; // You are looking for a pointer to pointer to float 
    m=malloc(rows*sizeof(float*)); //Step1 
    for (i=0;i<rows;i++) 
    { 
     m[i]=malloc(cols*sizeof(float)); //Step2 
    } 

Примечания

  1. Вам не нужно отлитого выход таНос по той причине, указанной в [ this ] ответ.
  2. В step1, вы выделяете память для строкfloat* s
  3. Для каждого из float* в step1, мы выделяем память для хранения COLSfloat с в step2
Смежные вопросы