2013-06-27 12 views
6

sto usando un GeomagnetismLibrary e una delle dichiarazioni di funzione hanno un formatoDecodifica la dichiarazione C e facendo uso di esso

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

Per semplicità ho dumbed giù a concentrarsi solo sulla mia obiettivo

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

Se voglio chiamare questa funzione devo dichiarare una variabile come:

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

N ow nella mia situazione non importa quale a non avrà mai più di un elemento, quindi non voglio dichiarare a come una matrice, ma piuttosto come solo un puntatore come

int *a; 

C'è un modo per digitare lanciare o dereferenziare questa variabile quando si chiama blah che funzionerà come desiderato e non causerà un segfault?

Inoltre, come definiresti quel tipo in termini di cast di tipo, ad esempio: (int *[]*)?

Grazie

risposta

3

Questo avrebbe fatto:

int * b; 

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

Sì, questo funziona davvero. Grazie! – lukecampbell

+0

@lukecampbell: mi sbagliavo. Si prega di vedere la mia correzione. – alk

Problemi correlati