将**int转换为int

Converting **int to an int

本文关键字:int 转换      更新时间:2023-10-16

我正在尝试使用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]->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下的库,该库位于

有一件事可能会有所帮助,那就是为您想要的内容创建一个int变量。

这将允许您在编译时检查变量

示例

int myInt=磁性模型[0]->nMax

应该工作

这里是您需要更多关于结构的信息的地方

MAGtype_磁性模型

例如,nMax是定义为整数,还是定义为int*

如果是后者,您可能需要正确的地址

&(MagneticModels[0]->nMax)

但是,通常情况下,使用数组表示法[0]"取消引用指针"

希望这能帮助

只是不要取它的地址

if (var < MagneticModels[0]->nMax)....