6

我正在使用 GeomagnetismLibrary 并且其中一个函数声明具有格式

int MAG_robustReadMagModels(char *filename, MAGtype_MagneticModel *(*magneticmodels)[], int array_size)

为了简单起见,我将其简化为只专注于我的目标

void blah(int *(*a)[])
{
    (*a)[0] = malloc(sizeof(int));
    (**a)[0] = 12;
}

如果我想调用这个函数,我必须声明一个变量,如:

int *a[1];
blah(&a);

现在在我的情况下,无论什么a都不会有多个元素,所以我不想声明a为一个数组,而只是像一个指针

int *a;

有什么方法可以在调用时键入强制转换或取消引用此变量,blah这将按需要工作并且不会导致段错误?

此外,您将如何根据类型转换定义该类型,例如:( int *[]*)?

谢谢

4

1 回答 1

3

这会做:

int * b;

blah((int *(*)[]) &b);
于 2013-06-27T13:57:22.937 回答