2013-06-27 11 views
6

Używam GeomagnetismLibrary i jednej z deklaracji funkcyjne mają formatDekodowanie deklarację C i korzystające z niego

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

Dla uproszczenia I już dumbed to w dół po prostu skupić się na celem

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

Jeśli chcę wywołać tę funkcję muszę zadeklarować zmienną jak:

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

N OW w mojej sytuacji nie wiem co a nigdy nie będzie miał więcej niż jednego elementu, więc nie chcę zadeklarować a jako tablica, ale raczej tylko jako wskaźnik jak

int *a; 

Czy jest jakiś sposób mogę pisać odlewanie lub dereferencja tej zmiennej przy wywoływaniu blah, która zadziała zgodnie z życzeniem i nie spowoduje awarii?

Ponadto, jak zdefiniowałbyś ten typ w kategoriach odlewania, na przykład: (int *[]*)?

Dzięki

Odpowiedz

3

To zrobić:

int * b; 

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

Tak to działa w rzeczywistości. Dzięki! – lukecampbell

+0

@lukecampbell: Myliłem się. Zobacz moją korektę. – alk

Powiązane problemy