Oppure

Loading
22/10/13 14:21
caiser
Salve ragazzi.

Scusate la mia ingenuità sull'argomento.

Mentre sto continuando con i miei studi amatoriali riguardante le Qt del C++
sono inciampato in un doppio puntatore.

Ammetto che non sapevo che era possibile farlo.

Qual'è il senso dell'utilizzo del **?


void QMetaObject::activate(QObject *sender, int signalOffset, int local_signal_index, void **argv)
{
    int signal_index = signalOffset + local_signal_index;

 QObjectConnectionListVector *connectionLists = sender->d_func()->connectionLists;
    const QObjectPrivate::ConnectionList *list =
        &connectionLists->at(signal_index);

  QObjectPrivate::Connection *c = list->first;
    if (!c) continue;



aaa
22/10/13 14:27
pierotofy
int a = 5;
int *b = &a;
int **c = &b;
cout << **c << endl; // <-- 5


Potresti fare anche un puntatore ad un puntatore ad un puntatore ad un puntatore... ecc.

Nel caso di argv e' utile perche' argv e' un array di stringhe (ogni elemento dell'array = puntatore, ogni stringa = puntatore).

* ha due scopi; dichiarare una variabile puntatore (se usato nella dichiarazione di una variabile), oppure per dereferenziare un puntatore. Quando chiami *variabile, stai chiedendo di dereferenziare la variabile (andare a vedere che cosa c'e' all'indirizzo puntato).
Ultima modifica effettuata da pierotofy 22/10/13 14:29
Il mio blog: piero.dev
22/10/13 16:13
ZioCrocifisso
Il doppio puntatore viene utilizzato soprattutto negli array di array, specialmente quando gli array inferiori hanno dimensione variabile e/o sono allocati dinamicamente, e negli array di puntatori (gli array di array sono effettivamente array di puntatori, ma non necessariamente un array di puntatori è un array di array).
aaa
23/10/13 7:55
caiser
grazie mille a tutti.

siete stati molto precisi e dettagliati vi ringrazio di tutto.
aaa