Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [c++] Funzione + array

  1. #1

    [c++] Funzione + array

    Ciao, io ho provato a fare questo codice


    int main()
    {
    int a[3] = {1,2,3};
    b(a);
    cout << a[2] << endl;
    return 0;
    }
    void b(int *a) {
    a[2] = 5;
    }


    Che giustamente mi modifica il valore del 3° elemento dell'array, perchè ne passo l'indirizzo.

    Però volevo sapere se c'era il modo di passarne una copia dell'array così da non modificare l'array passato, ma che quando esco dalla funzione l'array mi torna nuovamente come prima...

    Qualcuno sa se si può?

    Ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798
    Forse basta:
    void b(const int *a)
    Slack? Smack!

  3. #3
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Credo proprio di no... devi fare una funzione che copi l'array.


  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798
    Perchè no?
    Passa un puntatore costante all'array e la copia la crea
    all'interno del metodo, in modo da localizzare le
    varie operazioni.
    Slack? Smack!

  5. #5
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    OK, ma comunque il compilatore non esegue automaticamente il lavoro di copiatura!

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798
    L'utilità del const è anche quello o sbaglio?
    Abbi pazienza se insisto, ma quando posso studiacchio
    un poco di c++ e da autodidatta cerco conferme.
    Slack? Smack!

  7. #7
    const fa si che non venga alterata la variabile e quindi io non potrei modificare l'array dentro la funzione... ma io voglio modificarlo, solo che all'uscita vorrei che tornanne lo stesso array che era prima della chiamata della funzione, quindi mi servirebbe creare una copia...

    Ciao

  8. #8
    Gli array in C puoi passarli solo per riferimento.

    Un' idea sarebbe dentro la funzione copiare l'array nel heap, e finito di fare le operazioni desiderate, puntare all'indirizzo del array del heap.

    Questo ti consuma memoria però, quindi ti conviene allocare nel heap anche l'array originale e deallocarlo una volta finito le operazioni che dovevi fare.

  9. #9
    Grazie

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 © 2025 vBulletin Solutions, Inc. All rights reserved.