如何解决C中的指针矩阵
我正在尝试执行以下代码
static double** updateA(double f_x0,double f_x1,double f_x2){
double a[3][3] = {{f_x0*f_x0,f_x0,1},{f_x1*f_x1,f_x1,{f_x2*f_x2,f_x2,1}};
return a;
}
static double** updateAc (double f_x0,double f_x2,double x0,double x1,double x2){
double ac[3][3] = {{f_x0*f_x0,x0},x1},x2}};
return ac;
}
static double det3x3 (double** a){
return (a[0][0]*((a[1][1]*a[2][2]) - (a[2][1]*a[1][2])) - a[0][1]*(a[1][0]
* a[2][2] - a[2][0]*a[1][2]) + a[0][2]*(a[1][0]*a[2][1] - a[2][0]*a[1][1]));
}
static double newx2 (double f_x0,double x2){
double **ac = updateAc(f_x0,x0,x1,x2);
double **a = updateA(f_x0,f_x2);
double c = det3x3(ac)/det3x3(a);
return c;
}
无论如何它都无法正常工作,它会编译并显示以下警告:
不兼容的指针类型从中返回“ double [3] [3]” 结果类型为“ double **”的函数
但是当我尝试执行代码时,它不起作用。我正在使用gcc作为编译器。
有人可以帮助我吗?
先谢谢您
卢卡斯
解决方法
这是 struct方法。
- 仅适用于固定大小(在这种情况下为3 * 3)
- 尺寸是硬编码的
- 调用方(在这种情况下,
df1 <- structure(list(nombre = c("CRIST~","CRIST~","DIEGO~","Diego","TALLE~","Rub?n"),telefono1 = c(600040400L,600040400L,600530844L,600674848L,600674848L),telefono2 = c(NA,NA,FALSE,FALSE ),ads_ao = c(0L,0L,2L,0L),ads_am = c(0L,61L,311L,ads_mas = c(0L,ads_ma = c(0L,2L),total_price_ao = c(0L,59000L,total_price_am = c(0L,total_price_mas. = c(0L,total_price_ma = c(0L,22500L,59000L)),class = "data.frame",row.names = c("1","2","3","4","5","6","7","8"))
进行分配并传递一个指针。
main()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。