Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [C - C++] puntatori

  1. #1

    [C - C++] puntatori

    ciao a tutti, mi potreste spiegare che utilità hanno i puntatori? perchè devo creare anche una nuova variabile che contiene l'indirizzo in memoria di un'atra quando posso richiamarla con il suo nome?
    ovviamente mi è sfuggito qualche passaggio, ma i puntatori servono "solo" per gestire la memoria oppure hanno qualche altro scopo?

  2. #2
    Utente di HTML.it L'avatar di marco_c
    Registrato dal
    Jun 2004
    Messaggi
    1,047
    esempio:
    hai una funzione a cui passi come parametri 2 strutture A e B, due strutture molto grandi, con tanti campi.
    sarai d'accordo che è molto + comodo, molto + snello e risparmi molta + memoria se passi alla funzione soltanto i puntatori
    Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.

  3. #3
    grazie, quindi io passo alla funzione l'indirizzo in memoria dei parametri al posto degli stessi risparmiando tempo e migliorando le prestazioni.
    c'è qualcos'altro o e solo una questione di migliore gestione della memoria?

  4. #4
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    inoltre se passi dei parametri per valore essi non potranno essere modificato in quanto verrebbe copiato il loro valore alla funzione, quando invece passi il loro riferimento di memoria verranno modificate le variabili passate alla chiamata della funzione.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  5. #5
    ok, ho un altro problema che mi sembra collegato, passando un array ad una funzione devo passare solo il suo puntatore o l'array stesso?
    come posso fare, non riesco a passare degli array in una funzione e tantomeno ad averli come risultato con return

  6. #6
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    un array è un puntatore al suo primo elemento che viene allocato sul momento quindi:

    codice:
    int array[5];
    corrisponde a:

    codice:
    ...
    int* array;
    ...
    array = (int*) malloc(5*sizeof(int));//in C ma funzia anche in C++
    array = new int[5];//solo in C++
    ...
    se tu fai

    codice:
    &array
    ottieni l'indirizzo dell'array stesso, ovvero l'indirizzo della cella puntatore che contiene l'indirizzo della cella a cui punta, quindi ottieni un puntatore a puntatore:

    codice:
    int** pTop = &array;//array è un array(ovvero un puntatore al 1° elemento)
    Quindi alla funzione passi direttamente array e come tipo di ritorno fai un puntatore, nel caso dell'esempio int*.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

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