2013-06-27 10 views
6

Ich bin ein GeomagnetismLibrary und einer der Funktionsdeklarationen verwendet haben ein FormatDekodierung der C-Deklaration und machen Gebrauch davon

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

Aus Gründen der Einfachheit ich dumbed es habe auf nur konzentrieren sich auf meine Ziel

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

Wenn ich diese Funktion ich wie eine Variable deklarieren müssen nennen:

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

N ow in meiner Situation, egal was a wird nie mehr als ein Element hat, so will ich nicht a als Array erklären, sondern vielmehr als nur einen Zeiger wie

int *a; 

Gibt es irgendeine Weise, die ich geben kann Wird diese Variable beim Aufruf von blah umgewandelt oder dereferenziert, was wie gewünscht funktioniert und keinen Segfault verursacht?

Auch, wie würden Sie diesen Typ in Bezug auf eine Art Besetzung definieren, zum Beispiel: (int *[]*)?

Dank

Antwort

3

Dies tun würde:

int * b; 

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

Ja, das tatsächlich funktioniert. Vielen Dank! – lukecampbell

+0

@lukecampbell: Ich lag falsch. Bitte sehen Sie meine Korrektur. – alk