数组指针问题
我有个函数如下:
void
rot(double vector[3], double angle, double matrix1[][3], double matrix2[][3],int m)
{...}
我创建动态2维数组,
decoymatrix = ( double **)calloc( decoycnt,sizeof(double *) );
if( decoymatrix == NULL )
exit(1);
for( i = 0; i < decoycnt; i++ )
decoymatrix[i] = ( double *)calloc( 3,sizeof(double) );
然后掉用函数如下:
double newdecoy[200][3];
rot(norm_vector, cita, decoymatrix, newdecoy,decoycnt);
编译有warning:
warning: passing argument 3 from incompatible pointer type
指的就是decoymatrix类型不匹配
为什么?
[解决办法]
既然二维数组的第二维固定,那应该这样动态分配
int (*decoymatrix)[3] = (int(*)[3])malloc(decoycnt*3*sizeof(double));
double newdecoy[200][3];
rot(norm_vector, cita, decoymatrix, newdocy, decoycnt);
// ...
free(decoymatrix);
[解决办法]
rot(double vector[3], double angle, double matrix1[][3], double matrix2[][3],int m)
中第3个参数定义的是个2维数组
而
int (*decoymatrix)[3] = (int(*)[3])malloc(decoycnt*3*sizeof(double));
是定义了一个指向3维数组的指针,数组成员都是int
试问
rot(norm_vector, cita, decoymatrix, newdocy, decoycnt);
的使用难道没问题吗?
请楼主讲清楚这个参数到底是想传入什么