C++ 将**int转换为int
我正在尝试使用C库,我必须创建以下代码:C++ 将**int转换为int,c++,C++,我正在尝试使用C库,我必须创建以下代码: void *foo = malloc(sizeof(MAGtype_MagneticModel *)); MAGtype_MagneticModel* *MagneticModels = (MAGtype_MagneticModel **)foo; 然后将其传递给一个C库函数,如下所示: if(!MAG_robustReadMagModels(filename, (MAGtype_MagneticModel* (*)[]) &MagneticM
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);
作为参考,我正在使用WMM2015_Windows.zip下的库,即只是不需要它的地址
if (var < MagneticModels[0]->nMax)....
if(varnMax)。。。。
一件可能有用的事情是为您想要的内容创建一个int变量
这将允许您在编译时检查变量
范例
int myInt=MagneticModels[0]->nMax
应该有用
在这里,您需要更多关于结构的信息
磁型磁模型
例如,nMax是定义为整数还是整数*
如果是后者,您可能需要正确的地址
&(磁模型[0]->nMax)
但是,通常,使用数组表示法[0]“取消对指针的引用”
希望这有帮助。。。选择一种语言,我所使用的语言是C++。问题在于尝试使用我尝试使用的C库。这会导致程序编译,然后在到达代码的这一部分时崩溃。添加到MAGtype_MagneticModel的结构中,以及指向库的链接(如果您想查看)。请注意,如果我尝试运行
int-myInt=MagneticModels[0]->nMax
,代码将编译,但一旦到达该代码行就会崩溃。try int-myInt=MagneticModels[0].nMax给出错误:error:C2228:left of'.nMax'必须具有类/结构/联合类型为'MAGtype\u MagneticModel*'您打算改用'->'吗?
稍后再进行一些调试,我得到int myInt=MagneticModels[0]->nMax
在GeographicClibtest.exe中0x000000013F8694EA处发生以下异常输出时崩溃未经处理的异常:0xC0000005:访问冲突读取位置0x0000000000000050。
确定尝试\n int-myInt(&MagneticModels)。nMax或也尝试int*myIntPtr=MagneticModels[0]->nMax int myInt=&myIntPtr然后使用myInt查看发生了什么
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;
if (var < MagneticModels[0]->nMax)....