Diablix
31-05-2008, 20:44
Lo so che è una domanda banale, anzi proprio stupida, però finora ho quasi sempre programmato in Java e Javascript e devo ancora metabolizzare completamente i puntatori...
Allora, devo fare questa funzione:
char ** clessidra(char * tab[N][N], int *dimris)
in pratica devo restituire un vettore v di stringhe.
Se io lo dichiaro così:
char * v[2*N];
....
return v;
Mi restituisce il seguente errore: warning: function returns address of local variable
Se però io faccio così:
char * v[2*N];
char ** aux;
...
aux = v;
return aux;
Tutto funziona a meraviglia, non solo in fase di compilazione ma anche di run-time.
Qualcuno gentilmente mi spiegherebbe perchè nel secondo modo funziona e nel primo no?
So che è di una banalità imbarazzante, ma proprio mi sfugge :doh:
E soprattutto, cosa devo fare per eliminare quell'obrobrio di aux?
Grazie infinite in anticipo.
Allora, devo fare questa funzione:
char ** clessidra(char * tab[N][N], int *dimris)
in pratica devo restituire un vettore v di stringhe.
Se io lo dichiaro così:
char * v[2*N];
....
return v;
Mi restituisce il seguente errore: warning: function returns address of local variable
Se però io faccio così:
char * v[2*N];
char ** aux;
...
aux = v;
return aux;
Tutto funziona a meraviglia, non solo in fase di compilazione ma anche di run-time.
Qualcuno gentilmente mi spiegherebbe perchè nel secondo modo funziona e nel primo no?
So che è di una banalità imbarazzante, ma proprio mi sfugge :doh:
E soprattutto, cosa devo fare per eliminare quell'obrobrio di aux?
Grazie infinite in anticipo.