2016-07-02 7 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)); 
    } 
} 

나는 이것이 잘못된 것이라고 생각합니다. 나는 또한 실행하려고하면 오류가 발생합니다. 여기서 정확히 문제가 있습니까? int가 대신 float이어야합니까? 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

앞에'떠 *'외설 ' 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에의 출력이 필요합니다. 1 단계에서
  2. , 당신은 행 1 단계에서 float* 각각에 대해 float*
  3. 메모리를 할당, 우리가 할당 2 단계에서 COLSfloat의를 저장하는 메모리
관련 문제