Qualcuno sa dirmi come bisogna passare le liste in una function (procedure o funzioni)? Quando si passano per riferimento (indirizzo) o per copia? risp in molti
Qualcuno sa dirmi come bisogna passare le liste in una function (procedure o funzioni)? Quando si passano per riferimento (indirizzo) o per copia? risp in molti
Quale lista ?
Comunque lo fai, come lo faresti con tutti gli altri tipi di variabile ...
se per lista intendi un array nativo, sappi che in realtà è soltanto un puntatore, quindi tu scrivi:
int arrayDiInt[] = {2,3,4}
void funzione(int* array) {
// facciamo qualcosa su questo array, es.
array[0] = 3;
}
printf("%d ; %d ; %d",arrayDiInt[0],arrayDiInt[1],arrayDiInt[2]); // stampa "2 ; 3 ; 4"
funzione(arrayDiInt);
printf("%d ; %d ; %d",arrayDiInt[0],arrayDiInt[1],arrayDiInt[2]); // stampa "3 ; 3 ; 4"
se invece intendi una lista STL (standard template language), ti conviene passarla via reference (non mi dilungo a spiegarti, cerca la documentazione c++)
non so voi come le chiamate, ma la lista è una collezione di oggetti in cui ogni nodo è formato da un oggetto e da un puntatore all'oggetto successivo:
struct Rnodo {
int info;
Rnodo *next;
};
typedef Rnodo* Pnodo;
in questo modo possiamo collegare più oggetti attraverso il puntatore L->next; e cosi legando i vari nodi creiamo una lista
Si lo so cosa sia una lista. Che c'è che non va ?
se puoi un po spiegarmi quando passarle per riferimento e quando per copia, nel passaggio ad una function
Riferimento passi l'indirizzo della variabile.
Copia, lo dice il nome, passi una copia del contenuto della variabile.
Passi per riferimento quando:codice:void riferimento(RNodo *nodo); void riferimento_reference(RNodo& nodo); void copia(Rnodo nodo);
1) Devi velocizzare il codice.
2) Devi modificare il contenuto della variabile.
Passi per copia quando ti serve solo leggere il valore della variabile