将** int转换为int

时间:2016-03-29 18:28:50

标签: c++

我正在尝试使用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

找到的库。

2 个答案:

答案 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