我正在尝试使用C库,我必须创建以下代码:
void *foo = malloc(sizeof(MAGtype_MagneticModel *));
MAGtype_MagneticModel* *MagneticModels = (MAGtype_MagneticModel **)foo;
然后将其传递给C库函数之一,如下所示:
if(!MAG_robustReadMagModels(filename, (MAGtype_MagneticModel* (*)[]) &MagneticModels, epochs)) {
//ERROR
}
当它通过上述函数时,我想要从这个函数的一个组件中获取值。
int var = 0;
if (var < (&MagneticModels[0]->nMax)) var = (&MagneticModels[0]->nMax);
这给出了编译器错误:
C2446: '<' : no conversion from 'int *' to 'int'
我如何获取MagneticModels [0] - &gt; nMax的值而不仅仅是指针?
编辑:这是MAGtype_MagneticModel的结构:
typedef struct {
double EditionDate;
double epoch; /*Base time of Geomagnetic model epoch (yrs)*/
char ModelName[32];
double *Main_Field_Coeff_G; /* C - Gauss coefficients of main geomagnetic model (nT) Index is (n * (n + 1) / 2 + m) */
double *Main_Field_Coeff_H; /* C - Gauss coefficients of main geomagnetic model (nT) */
double *Secular_Var_Coeff_G; /* CD - Gauss coefficients of secular geomagnetic model (nT/yr) */
double *Secular_Var_Coeff_H; /* CD - Gauss coefficients of secular geomagnetic model (nT/yr) */
int nMax; /* Maximum degree of spherical harmonic model */
int nMaxSecVar; /* Maximum degree of spherical harmonic secular model */
int SecularVariationUsed; /* Whether or not the magnetic secular variation vector will be needed by program*/
double CoefficientFileEndDate;
} MAGtype_MagneticModel;
作为参考,我正在使用WMM2015_Windows.zip下的found here
找到的库。答案 0 :(得分:1)
可能有用的一件事是为你想要的东西创建一个int变量。
这将允许您在编译时检查变量
例如
int myInt = MagneticModels [0] - &gt; nMax
应该有效
您需要了解有关
结构的更多信息MAGtype_MagneticModel
例如,nMax定义为整数,还是int *
如果是后者,则可能需要正确的地址
及(MagneticModels [0] - &GT; n最大)
但是,一般情况下,使用数组符号[0]&#39;取消引用指针&#39;
希望这有帮助
答案 1 :(得分:0)
不要拿它的地址
João Pedro Mantovani