PDA

Visualizza la versione completa : [C] Operatore sconosciuto: **


nemesis_83
11-11-2005, 12:29
Salve,
sto studiando il linguaggio C e mi trovo di fronte ad un problema che non riesco a risolvere: un operatore del quale non trovo traccia n nei vari manuali su cui sto studiando, n su internet.

Correggetemi se sbaglio il simbolo " * " oltre ad indicare la moltiplicazione, rappresenta l'operatore di risoluzione che mi restituisce il valore a cui punta un puntatore.
In alcuni esercizi, per, ho trovato righe di codice del tipo



** p = q + (*r);
printf(%d, **p);


Purtroppo non riesco a capire cosa indichino i due simboli "**" n sono riuscito a trovare qualche indicazione.
Mi sapete aiutare e, se si tratta di qualche particolare operatore del C, indicare dove posso trovare informazioni al riguardo?

Grazie!

unomichisiada
11-11-2005, 12:59
Originariamente inviato da nemesis_83
Salve,
sto studiando il linguaggio C e mi trovo di fronte ad un problema che non riesco a risolvere: un operatore del quale non trovo traccia n nei vari manuali su cui sto studiando, n su internet.

Correggetemi se sbaglio il simbolo " * " oltre ad indicare la moltiplicazione, rappresenta l'operatore di risoluzione che mi restituisce il valore a cui punta un puntatore.
In alcuni esercizi, per, ho trovato righe di codice del tipo



** p = q + (*r);
printf(%d, **p);


Purtroppo non riesco a capire cosa indichino i due simboli "**" n sono riuscito a trovare qualche indicazione.
Mi sapete aiutare e, se si tratta di qualche particolare operatore del C, indicare dove posso trovare informazioni al riguardo?

Grazie!
E' semplicemente lo stesso operatore usato due volte.Si usa con i doppi puntatori (ache se raramente perch in genere se hai un doppio puntatore usi un solo asterisco per modificare il puntatore puntato dal doppio puntatore)

nemesis_83
11-11-2005, 13:33
Miii tutto qui? :dh:
E io che ci ho penato una settimana sopra a cercare informazioni.
Avevo pensato a una cosa del genere ma un puntatore di un puntatore mi sembrava un po' inutile e avevo scartato l'idea.

Quindi ad esempio



int x = 5;
int *xPtr, **yPtr;

xPtr = &x;
yPtr = &xPtr;
printf("%d", **yPtr);


mi restituisce 5?
Beh domanda retorica visto che non ho resistito e l'ho provato subito :D

Grazie mille davvero!

P.S.: I libri su cui studio, di cui uno un corso completo edito dalla Apogeo usato anche come testo universitario, non accennano minimamente ai doppi puntatori... Ora che me l'hai detto mi bastato cercare su google "doppio puntatore" e ho trovato esempi svolti dalla A alla Z. No comment.... :bh:

LeleFT
11-11-2005, 13:58
Se un puntatore pu essere visto come un array, un doppio puntatore pu essere visto come una matrice, e un triplo puntatore come una matrice di matrici, ecc...
Questo un modo per poter dichiarare un array di N elementi di stringhe lunghe P:


char **array;
int i, n, p;
...
array = (char **) malloc(n * sizeof(char *))
for (i=0; i<n; i++) arrai[i] = (char *) malloc(p * sizeof(char));

Ciao. :ciauz:

unomichisiada
11-11-2005, 17:26
Originariamente inviato da nemesis_83
P.S.: I libri su cui studio, di cui uno un corso completo edito dalla Apogeo usato anche come testo universitario, non accennano minimamente ai doppi puntatori... Ora che me l'hai detto mi bastato cercare su google "doppio puntatore" e ho trovato esempi svolti dalla A alla Z. No comment.... :bh:
E' classico!! Io ho avuto un buon professore e poi ho fatto un bel p di esperienza anche perch amo il C ed ogni volta che vedo un problema stimolante,anche qu sul forum mi cimento subito se ho tempo. :ciauz:

Loading