Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema con matrice
Forum - C/C++ - Problema con matrice - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Segnala al moderatore
Postato alle 19:00
Venerdė, 18/03/2011
ma dov'č che nella funzione chiamata (che č la funzione ricerca) inizializza un altro array?:-?:-?

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:31
Venerdė, 18/03/2011
Se tu fai kosi' č una soluzione troppo dispersiva memoricamente!

int ricerca(int rows , int columns , int matrix[rows][columns], int x)

nella funzione int ricerca affida un puntatore all'array passato per indirizzo nella funzione chiamante in questa maniera( come qualcuno ti ha gia' suggerito)          int* matrix, se tu metti int matrix[rows][columns] stai inizializzando un altro array, contenente gli elementi dell'array passato nel main. Quindi appena si attivera' un record di attivazione nello stack, in quel preciso momento (fincheė nn termina la funzione) avrai lo stack con 2 array! se invece affidi un puntatore alla funzione(che puntera' al primo elemento dell'array) non c'č bisogno di creare un altro vettore, conclusione funzione meno invansiva nello stack, e codice piu' elegante.

PM Quote
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Segnala al moderatore
Postato alle 16:43
Sabato, 19/03/2011
sono sicuro che ti stai sbagliando:

scrivere
Codice sorgente - presumibilmente C/C++

  1. int a (int *v);


e scrivere
Codice sorgente - presumibilmente C/C++

  1. int a( int v[])



č la stessa identica cosa, infatti in ogni caso viene passato un puntatore al primo elemento dell'array!

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:25
Sabato, 19/03/2011
Leggi attentamente, io non ho scritto " int a (int *v);  int a( int v[]) " !
Che ovviamente č la "stessa identica kosa", ma ho espressamente scritto " int ricerca(int rows , int columns , int matrix[rows][columns], int x) " il ke significa ke sta inizializzando un altro array xke definisce rows e columns interi.
Questa soluzione era stata adottata da Hedo, io (come ripeto) ho detto ke non ha senso dichiarare un nuovo array, (nella funzione chiamata) ma avrebbe molto piu' senso affidare un puntatore che "punta" all'indirizzo della prima locazione(contigua) della'array.
Spero di essere stato chiaro.
ciao :)

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo