|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Oct 2008
Messaggi: 65
|
[c] return di un array da funzione
ciao a tutti,
sono un pò confuso su come sia possibile fare, ad esempio, un "return a[]" da una funzione, dove a è un array int di n variabili... (n è definito) c'è qualche buon anima che mi aiuta?? ![]() tnx ![]() ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Detta così non è molto chiara ... devi comunque tornare un puntatore
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Oct 2008
Messaggi: 65
|
dunque cerco di chiarire,
ho una matrice char ed una stringa in input, voglio che la funzione controlli se gli elementi della matrice appartengano alla stringa (fatto) e mi restituisca gli indici delle parole trovate. io ho fatto: Codice:
void trovaParole(char string[], int a[]); main() { ......................... trovaParole(string,a); ......................... } void trovaParole(char string[], int a[]) { ................... dichiarato la matrice etc etc.... ................... tokenPtr = strtok(string, " ?" ); for(x=0;x<8;x++){ for(y=0;y<7;y++){ if( !strcmp( mis[x][y], tokenPtr) ){ a[z]=x+1;z++; a[z]=y+1;z++; } } tokenPtr = strtok(NULL, " ?"); } return; } |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Non ho capito molto bene quello che devi fare ma se vuoi una funzione che ti torni una lista di indici devi usare memoria dinamica (in C)
Ho scritto al volo questo esempio: Codice:
void trovaParole(int **a) { int i = 0; *a = malloc( 11 * sizeof(int) ); for( ; i < 10; ++i ) (*a)[i] = i; (*a)[i] = -1; // termina la lista } int main () { int *x = NULL; int i = 0; trovaParole(&x); if (x) { while(x[i] >= 0) printf("indice: %i\n", x[i++]); free(x); } return 0; } Alloca un vettore di interi passato dal main con 11 interi, l'ultimo lo setta a -1 come terminatore. Non so se ti può servire
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
![]() |
![]() |
![]() |
#5 | |
Member
Iscritto dal: Aug 2007
Messaggi: 50
|
Quote:
Codice:
return vector; Ultima modifica di dreadknight : 08-12-2008 alle 15:09. |
|
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Oct 2008
Messaggi: 65
|
ok credo di aver capito, ho provato come avete suggerito ma da errore di conv da void* a int*, adesso lo aggiusto un poco e grazie dell'aiuto
![]() Ultima modifica di r3d87 : 08-12-2008 alle 16:35. |
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Aug 2007
Messaggi: 50
|
probabilmente perché hai dichiarato la funzione trovaParole come void; se devi farti restituire un puntatore ad un vettore di interi, la devi dichiarare int (o meglio int* )
|
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: Oct 2008
Messaggi: 65
|
no ho risolto quel problema (era il compilatore che mi considerava l'argomento di malloc come void) il nuovo problema
![]() domani se nn ho trovato l'errore chiedo dinuovo udienza ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:23.