想找个矩阵运算的函数,在网上搜了个
矩阵转置函数,参数是二重指针,没这么玩过,想求教我写函数时应该怎么写输入参数?比如定义一个二维数据test1[3][3] = {{1,1,1},{2,2,2},{3,3,3}};
想通过下面的函数转到test2[3][3]中,怎么写?怎么试都在报错。一重的指的话就直接matrix_t(test1,test2,3,3);但是二重。。。。不会了
- void matrix_t(double **a_matrix, const double **b_matrix, int krow, int kline)
- ////////////////////////////////////////////////////////////////////////////
- // a_matrix:转置后的矩阵
- // b_matrix:转置前的矩阵
- // krow :行数
- // kline :列数
- ////////////////////////////////////////////////////////////////////////////
- {
- int k, k2;
-
- for (k = 0; k < krow; k++)
- {
- for(k2 = 0; k2 < kline; k2++)
- {
- a_matrix[k2][k] = b_matrix[k][k2];
- }
- }
- }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
main.c(30): error: #167: argument of type "double *" is incompatible with parameter of type "double **"
不行的,报上面的错,我刚开始就是这么搞的,然后各种试也没试出来应该什么格式写。
那,搜C语言矩阵运算,百度的第一个,有兴趣的可以玩玩看。。。玩会了麻烦告诉我一下。几个月几年以后都行,我再试试不会玩就用一维数组了。
double (*a_matrix)【3】 试试
数组的行数没有太大关系,可以指定也可以不指定
所以声明应该改成这样
void matrix_t(double (*a_matrix)[3], const double (*b_matrix)[3], int krow, int kline);
或者这样void matrix_t(double (*a_matrix)[3][3], const double (*b_matrix)[3][3], int krow, int kline);
调用就matrix_t(&test2[0],&test1[0],3,3);应该就没问题了
一周热门 更多>