2013-06-27 19 views
6

我使用的是GeomagnetismLibrary和函數聲明一個有格式解碼C聲明和利用

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 *[]*)?

感謝

回答

3

這會做:

int * b; 

blah((int *(*)[]) &b); 
+0

是的,這確實工作。謝謝! – lukecampbell

+0

@lukecampbell:我錯了。請看我的更正。 – alk