Visualizzazione dei risultati da 1 a 8 su 8

Discussione: (C++) Array

  1. #1

    (C++) Array

    Salve!
    Ho un problema a gestire gli array, non posso essere più specifica... mi dilungherei troppo, cercavo qualche animo sensibile che potesse aiutarmi per evitare gravi crisi esistenziali... :gren:
    se siete così gentili e pronti a sopportarmi potreste contattarmi al mio icq?... penso sia nel profilo ma nel dubbio lo riporto qui: 294837839 GRAZIEEEEEEEEEEEEEE!
    P.S. qualora abbia infranto qualche regola del forum scusatemi...ma è il mio primo post!

  2. #2
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558
    In effetti mi sa che hai infranto una regola!

    Non si chiede di essere contattati in privato!

    PErciò posta il tuo problema e vedrai che riceverai molte + risposte che postando il tuo numero di ICQ

  3. #3
    lo immaginavo....no ho avuto il tempo di leggere il regolamento!! :quipy:

    ok provo a spiegare qual'è il problema.
    Non so come passare un array ad una funzione... ho un casino in testa... finchè si tratta di passare una variabile non ci sono problemi, ma quando provo con l'array non so come comportarmi.
    presumo che sia troppo generica la descrizione del mio problema, ma non so spiegarmi meglio, è da poco che mi sono avvicinata alla programmazione in generale, quindi non ho proprio le basi!
    Grazie mille.... avrò infranto qualche altra regola? spero di no ...vado a leggere il regolamento :gren:

  4. #4
    Un array in C lo passi normalmente come se fosse un altra variabile.

    codice:
    #include <stdio.h>
    
    void funzione (int [], int);
    
    int main (void) {
            int i;
    	int vettore[4] = {1, 2, 3, 4};
    	funzione (vettore, 4);
    	for (i = 0; i < 4; i++)
            	printf ("%d", vettore[i]);
    	return (0);
    }
    
    void funzione (int array[], int n) {
    	int i;
    	for (i = 0; i < n; i++)
            	array[i] = array[i] + 1;
    }
    In pratica l'array lo puoi passare solo per riferimento, infatti come parametro devi passargli l'indirizzo di questo e da quanti elementi è formato.

    La funzione scritta sopra può essere tranquillamente scritta anche in questo modo:

    codice:
    void funzione (int *, int);
    
    ...
    
    void funzione (int *array, int n) {
    	int i;
    	for (i = 0; i < n; i++)
            	*(array + i) = *(array + i) + 1;
    }
    Che come vedi, aggiunge 1 ad ogni elemento del array di interi.

    In pratica quando chiami la funzione, nel area di memoria dello stack ci vanno a finire la variabile n e la variabile i, che una volta terminata la funzione (all'ipotetico return che nn c'è perchè è void), vengono cancellate.

    L'array invece è passato per riferimento, cioè la funzione và direttamente nell'area di memoria dove si trova questa sequenza di interi (1,2,3,4) cioè il nostro array, e ne modifica il valore di ognuno.

    Quindi tornando al main, il vettore vettore è modificato, perchè corrisponde al vettore array della funzione.

    Un array può essere anche chiamato vettore, non farti impressionare dai nomi.

    Ciao :gren:

  5. #5
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Michele Facchin, io sono un newbie del c++ e mi scuso in anticipo x la (forse) cazzata ke sto x dire...Ma il passaggio per rifermiento non si fa con &?

  6. #6
    Grazie per l'esempio il problema è che io non sono ancora così avanzata da capire quello che hai scritto, o meglio alcune cose che hai scritto. Le librerie che io sto usando sono solo iostream e string, magari ti farò un esempio pratico così capisci cosa intendo.... Grazie!

  7. #7
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Beh...nn è così difficile da capire...
    Vediamo se ci riesco io a fartelo capire: ad una funzione puoi passare le variabili in due modi: o per valore (quello che si fa praticamente sempre) o per riferimento:
    codice:
    ...
    void funzione (int &ciccio);
    
    void main()
    {
    int a = 1;
    cout<<a; //In output abbiamo 1
    funzione(a);
    cout<<a; // In output abbiamo 2004
    }
    
    void funzione (int &ciccio)
    {
    ciccio = 2004;
    }
    Che vuol dire questo: ciccio riesce a modificare il contenuto di a perché punta alla stessa locazione di memoria, questo vuol dire che nel programma ci sarà un momento che 2 variabili puntano alla stessa informazione. Questo è molto utile per modificare variabili fuori di una funzione.

    Ora voglio dire una cosa: io sn un casinista a spiegare, spero che qualcuno mi sappia corregere!

    Buona domenica

  8. #8
    Originariamente inviato da FinalFantasy
    Michele Facchin, io sono un newbie del c++ e mi scuso in anticipo x la (forse) cazzata ke sto x dire...Ma il passaggio per rifermiento non si fa con &?
    No non hai detto una cazzata, in c++ si può fare anche come hai detto tè.
    Per citarti un esempio:

    codice:
    #include <stdio.h>
    
    void f (int &);
    
    int main (void) {
    	int a = 3;
    	f (a);
            printf ("%d \n", a);
    	return (0);
    }
    
    void f (int &a) {
    	a = a * a;
    }
    Equivale a:

    codice:
    #include <stdio.h>
    
    void f (int *);
    
    int main (void) {
    	int a = 3;
    	f (&a);
            printf ("%d \n", a);
    	return (0);
    }
    
    void f (int *a) {
    	*a = *a * *a;
    }
    Perchè passiamo tutti e due l'indirizzo della variabile
    Il passaggio per riferimento in poche parole è il passaggio dell'indirizzo quando tu metti la &, non fai altro che prendere l'indirizzo della variabile che passi, e quindi operi direttamente sul contenuto di quell' indirizzo, che ovviamente corrisponde alla nostra variabile.

    ciau :metallica

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.