Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Grejo
    Registrato dal
    Jan 2003
    Messaggi
    838

    [C++] Passaggio di un array come parametro ... ???

    Perchè quando passo un valore a una funzione (tramite il passaggio per valore cioè senza * o &) il compilatore mi crea una copia di tale valore e all'interno della funzione viene usata la copia (quindi non viene modificato l'originale) mentre quando passo un array è come se passasi un puntatore, quindi posso modificare l'array passato ... ??? Ciao, Kios!
    Nato per essere un vincente, vivo per dimostrarlo!

    Paperino si fà le paperine ed è contento,
    Topolino si fà le topoline ed è contento,
    Pippo non è contento.

  2. #2
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    Perchè un array è a tutti gli effetti un puntatore costante, cioè un puntatore che non può cambiare la locazione di memoria a cui punta...
    Linux user number 403381

    Stop TCPA!

  3. #3
    Utente di HTML.it L'avatar di Grejo
    Registrato dal
    Jan 2003
    Messaggi
    838
    Mi puoi spiegare meglio che non ho capito ... !!!
    Ciao, Kios! :-)
    Nato per essere un vincente, vivo per dimostrarlo!

    Paperino si fà le paperine ed è contento,
    Topolino si fà le topoline ed è contento,
    Pippo non è contento.

  4. #4
    Perche' quando apri una funzione nello stack si apre una nuova area di memoria e questa contiene o variabili (compiate per valore) o riferimenti a variabili (puntatori)

    Quando la funzione termina l'ambiente creato per la funzione viene deallocato (cancellato) con tutto il contenuto...

    Percio' una variabile passata per valore viene modificata all'interno della funzione ma non fuori mentre passando per un puntatore viene modificato il valore all'interno della funzione chiamante perche' si sta' facendo riferimento a un indirizzo di memoria presente nella funzione chiamante...

    (Alla fine mi sono un po' incartato)
    se non capisci chiedi
    #include <stdio.h>
    int main() { char m[18+1] = "_TeYS_We2^[TWda [f";
    int i = (((3*7))-21); for (; m[i]; i++)
    (i<27) ? m[i]+=(((13)*3)-25) : m[i] -= (7+(i)*(-1));
    puts(m); getchar(); return 0; };

  5. #5
    Utente di HTML.it L'avatar di Grejo
    Registrato dal
    Jan 2003
    Messaggi
    838
    Penso di aver capito ... !!!
    Grazie ... sei stato molto gentile ... a buon rendere ... !!! Ciao, Kios!
    Nato per essere un vincente, vivo per dimostrarlo!

    Paperino si fà le paperine ed è contento,
    Topolino si fà le topoline ed è contento,
    Pippo non è contento.

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.