首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数组指针有关问题

2012-02-10 
数组指针问题我有个函数如下:voidrot(doublevector[3],doubleangle,doublematrix1[][3],doublematrix2[][3

数组指针问题
我有个函数如下:
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);
的使用难道没问题吗?
请楼主讲清楚这个参数到底是想传入什么

热点排行