2015-11-14 92 views
1

我有一个函数:为什么不能像这样传递参数?

int getCaseNum(float isovalue,float *F,int **point,int *dims,float *F_value) 
{ 

int digtial_point[8]; 
int case_num=0; 
int i = 0; 
for(i=0;i<8;i++) 
{ 
    F_value[i] = F[GetPointIndex(point[i],dims)]; 
    if(F_value[i]>isovalue) 
    { 
     digtial_point[i] = 1; 
     case_num = case_num + powf(2,i); 
    } 
    else 
    { 
     digtial_point[i] = 0; 
    } 


} 

return case_num; 

} 

然后我想调用这个函数在另一个这样的功能:

int pointID[8][3]; 
int case_num = getCaseNum(isovalue,F,pointID,dims,F_value); 

然而,当我编译我的代码,它说:

/Users/liyuanliu/Documents/lecture/sicvis/final_6b/mc510/proj6B.cxx:862:24: error: 
    no matching function for call to 'getCaseNum' 
    int case_num = getCaseNum(isovalue,F,pointID,dims,F_value); 
        ^~~~~~~~~~ 
/Users/liyuanliu/Documents/lecture/sicvis/final_6b/mc510/proj6B.cxx:816:5: note: 
    candidate function not viable: no known conversion from 'int [8][3]' to 
    'int **' for 3rd argument 
int getCaseNum(float isovalue,float *F,int **point,int *dims,float *F_value) 
^ 

为什么会发生这种情况?我不能像这样传递参数吗?

+1

见[此](http://stackoverflow.com/questions/7586702/is-2d-array-a-double-pointer)问题。 – crayzeewulf

+1

有明显的类型不匹配。 2D阵列不是双指针。 –

回答

0
// Create a dynamic 2D int array 
int **pointID=new int*[8]; 
for(int i=0;i<8;i++) { 
    pointID[i]=new int[3]; 
} 
int case_num=getCaseNum(isovalue,F,pointID,dims,F_value); 
0

您需要获取指向2D数组中第一个条目的指针。 由于阵列是连续的,则可以使用下面的逻辑进行迭代

int getCaseNum(float isovalue,float *F,int* point,int *dims,float *F_value) 
{ 

    for (i = 0; i < 24; i++) 
    { 
     cout << *(point+i*sizeof(int)); 
    } 
} 

caller: 

int case_num = getCaseNum(isovalue,F,&pointID[0][0],&dims,F); 
相关问题