Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    102

    [C] **Ptr cosa significa ?!

    Salve a tutti programmatori !!!
    Mi sapreste dire a cosa serve questo "doppio" puntatore ?

    **Ptr

  2. #2
    I puntatori doppi sono semplicemente dei puntatori ad un altro puntatore. Sono usati più di rado dei puntatori semplici, ma hanno comunque una loro utilità. Uno dei loro scopi è consentire di modificare una variabile puntatore ad una funzione (=>consentire di cambiare oggetto a cui punta), un altro è per implementare array multidimensionali in termini di array di array.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    serve anche per implementare array di puntatori o array di stringhe

    codice:
    char **arraystringhe; 
    char ***matricestringhe;
    item_t **arraypuntatoriaitem_t;

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    102
    Originariamente inviato da MItaly
    I puntatori doppi sono semplicemente dei puntatori ad un altro puntatore. Sono usati più di rado dei puntatori semplici, ma hanno comunque una loro utilità. Uno dei loro scopi è consentire di modificare una variabile puntatore ad una funzione (=>consentire di cambiare oggetto a cui punta), un altro è per implementare array multidimensionali in termini di array di array.
    Grazie mille....potrei avere qualche info in più sugli array multidimensionali ?

  5. #5
    Originariamente inviato da Ghemon-a
    Grazie mille....potrei avere qualche info in più sugli array multidimensionali ?

    Semplicemente, gli array sono insiemi di oggetti di un certo tipo, che possono essere caratteri, numeri interi, reali o, perchè no, a loro volta array! In questo modo, quasi in maniera ricorsiva, posso avere un array di array, in cui appunto ogni elemento è un array di array e andare avanti cosi all'infinito!

    Posso ritrovarmi, ad esempio, con un elemento di questo tipo:

    codice:
    int array [dim1][dim2][dim3]...[dimN];
    Diventa un po' complicato capire come si accede ad ogni singolo elemento (ossia come si calcola l'offset). Supponendo di avere una matrice (rappresentabile con un vettore bidimensionale), l'elemento alla i-esima riga e j-esima colonna si troverà in posizione
    (primo elemento della matrice) + (lunghezza delle righe) * i + j

    Esempio, ho la matrice:

    codice:
    int mat [20][30];
    l'elemento alla i-esima riga e j-esima colonna sarà:

    codice:
    *(mat[0][0] + 30*i + j);
    Salute a voi, da Laikius!

    --> Faber est suae quisque fortunae <--

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278
    Dovresti trovare ulteriori informazioni in rete e sui libri sotto la voce: "Allocazione dinamica della memoria in C".

    Gli array ed i puntatori hanno un rapporto stretto.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    487

    mmm

    ragazzi...negli array multidimensionali come si alloca e dealloca? xD

    codice:
    char ** ehi;
    ehi = new char * [100]:
    
    for(int i = 0; i < 100; i++)
        ehi[i] = new char [30];
    
    //così in teoria ho 100 stringhe da 30 caratteri...ma per deallocarle??
    //e sinceramente non sono sicuro che si faccia proprio così!
    
    delete [] ehi; ???
    
    OPPURE
    
    for(int i = 0; i < 100; i++)
        delete ehi[i] [];
    
    delete [] ehi;

    chiaritemi un po' le idee perpiacre

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278
    Ci sono le funzioni malloc() per definire la grandezza dell'array dinamico e poi free() per libera la memoria.

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.