C语言不会用了,求助,急

2019-10-15 22:04发布

想找个矩阵运算的函数,在网上搜了个 矩阵转置函数,参数是二重指针,没这么玩过,想求教我写函数时应该怎么写输入参数?比如定义一个二维数据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];  
  •         }  
  •     }  
  • }  


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
憨厚诚实大叔
1楼-- · 2019-10-16 22:52
augustedward
2楼-- · 2019-10-16 23:33
 精彩回答 2  元偷偷看……
yuzeyuan1
3楼-- · 2019-10-17 02:00
augustedward 发表于 2016-12-20 14:31
一样的啊!要么matrix_t(&test1[0],&test2[0],3,3)

main.c(30): error:  #167: argument of type "double *" is incompatible with parameter of type "double **"
不行的,报上面的错,我刚开始就是这么搞的,然后各种试也没试出来应该什么格式写。
yuzeyuan1
4楼-- · 2019-10-17 06:48
http://blog.csdn.net/linaijunix/article/details/50358617
那,搜C语言矩阵运算,百度的第一个,有兴趣的可以玩玩看。。。玩会了麻烦告诉我一下。几个月几年以后都行,我再试试不会玩就用一维数组了。
wenzh3333
5楼-- · 2019-10-17 09:50
诶  似乎这个函数的形参类型错了吧。。double **a_matrix  这个是一个指向double类型的指针的指针  和二维数组的指针不一样的吧。。把函数的形参修改一下
double (*a_matrix)【3】   试试
yaxeff
6楼-- · 2019-10-17 14:39
如果将二维数组作为参数传递给函数,那么在函数的参数声明中必须指明数组的列数,
数组的行数没有太大关系,可以指定也可以不指定
所以声明应该改成这样
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);应该就没问题了

一周热门 更多>