2016-07-02 19 views
0

私は配列をfloatの行列を保持するために割り当てようとしています。渡される値は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)); 
    } 
} 

私はこれが間違っていると感じています。私も実行しようとするとエラーが発生します。 どこに問題がありますか?代わりに浮動小数点数にする必要がありますか? malloc関数が正常に実行され、私はNULLを返すことwan't失敗していない場合

編集****

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)); 
    } 
} 

大丈夫。 ここでこのコードにする必要があります。

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 ]の回答で述べた理由のキャストにはないmalloc関数の出力を必要とします。 STEP1で
  2. 、あなたが行STEP1でfloat*のそれぞれについてfloat*
  3. にメモリを割り当てる、我々はcolsのSTEP2でfloat
関連する問題