View Full Version : Che significa il simbolo -> in C?
Come da oggetto, non sono riuscito a trovarlo. Sto studiando degli algoritmi in cui c'è
var1->var2
e non capisco cosa significhi...
supertonno
22-03-2004, 15:47
Di solito quando si studiano algoritmi, l'implementazione, e quindi il linguaggio è indipendente. Si usa uno pseudo linguaggio.
Nel mio libro la freccia indica l'assegnazione (Es C : var1=var2)
Su che libro stai studiando?
-> lo usi quando hai a che fare con i puntatori
struct tuotipo {
int numero;
struct *tuotipo puntatore;
}
miavar = malloc(sizeof(tuotipo));
miavar->numero = 10;
miavar->puntatore = NULL;
questo perché fai riferimento alla memoria dinamica. in caso contrario useresti il . per specificare i vari campi del tuo tipo di dato
Originariamente inviato da recoil
-> lo usi quando hai a che fare con i puntatori
struct tuotipo {
int numero;
struct *tuotipo puntatore;
}
miavar = malloc(sizeof(tuotipo));
miavar->numero = 10;
miavar->puntatore = NULL;
questo perché fai riferimento alla memoria dinamica. in caso contrario useresti il . per specificare i vari campi del tuo tipo di dato
no, questo e' perche' miavar e' un puntatore a una struttura tuotipo, indipendentemente che sia allocata dinamicamente o meno.
la notazione e' equivalente a (*miavar).numero
in breve l'operatore . (punto) accede al campo di una struttura, l'operatore -> (freccia) al campo di un puntatore a una struttura :O
Ma allora è equivalente al punto o no?
Cioé, serve per affettare i campi di tipo puntatore di una struttura? Oppure per affettare un puntatore su una struttura? :confused:
Originariamente inviato da kingv
no, questo e' perche' miavar e' un puntatore a una struttura tuotipo, indipendentemente che sia allocata dinamicamente o meno.
la notazione e' equivalente a (*miavar).numero
si hai ragione
è che sai com'è, i puntatori li uso solo per roba allocata dinamicamente quindi mi è venuta naturale questa imprecisione.
Comincio a capire...
Serve per non complicarsi troppo la vita con l'affettazione dei campi di strutture ricorsive, tipo nodi di un grafo, giusto?
Ad esempio:
struct _nodo {
int valore,
struct *_nodo nodofiglio;}
typedef _nodo * Nodo;
Nodo mionodo;
mionodo -> valore=1; equivale a (*mionodo).valore=1;
In effetti nel mio algoritmo c'è qualcosa tipo:
(...)malloc(sizeof(struct _nodo));
La cosa comunque è ancora + complicata perché nella mia struttura c'è un
campostruct _nomestrutt **qualcosa;
e sto doppio puntatore non ho capito a cosa diaminazzo serve...
Comunque grazie a tutti.
PS Se avete una referenza bibliografica di un libro su C in cui si dettagliano queste cose (in qualunque lingua europea) ve ne sarei grato.
Originariamente inviato da figulus
PS Se avete una referenza bibliografica di un libro su C in cui si dettagliano queste cose (in qualunque lingua europea) ve ne sarei grato.
ho un ottimo manuale in lituano, interessa? :D :D
Originariamente inviato da figulus
campostruct _nomestrutt **qualcosa;
e sto doppio puntatore non ho capito a cosa diaminazzo serve...
Beh ci sono diversi usi...
- per l'allocazione dinamica di strutture bidimensionali (ma dopo si usa così qualcosa[x][y])
- per modificare un puntatore anche nel codice chiamante
void f(int **p, int *pb)
{
*p = pb; /* assegno al puntatore puntato da p il puntatore b */
}
int *x;
int a = 4;
int b = 5;
x = &a;
f(&x, &b);
/* ora x punta a b */
Ziosilvio
23-03-2004, 18:49
Originariamente inviato da figulus
Se avete una referenza bibliografica di un libro su C in cui si dettagliano queste cose (in qualunque lingua europea) ve ne sarei grato.
Cercare con Google no? :confused:
Comunque, su carta:
- B. W. Kernighan, D. M. Ritchie, "Linguaggio C --- Seconda edizione", Jackson Libri
(la casa editrice ha chiuso: sbrigarsi a trovarne una copia!)
- Deitel&Deitel, "C --- Corso completo di programmazione", Apogeo
Grazie ma il KR non è proprio quello che fa per me....
Le basi del C, fino a puntatori e allocazione dinamica, ce le ho.
Cerco piuttosto un libro di strutture dati, con esempi di implementazioni in C, per esempio che dia codici sull'implementazione di un grafo, un albero, un automa a stati finiti, etc.
Ziosilvio
24-03-2004, 17:48
Originariamente inviato da figulus
Grazie ma il KR non è proprio quello che fa per me....
Non sai quello che dici! :sofico:
Scherzi a parte: per me è stato un'illuminazione.
Cerco piuttosto un libro di strutture dati, con esempi di implementazioni in C, per esempio che dia codici sull'implementazione di un grafo, un albero, un automa a stati finiti, etc.
Allora forse ti serve:
Sedgewick, "Algoritmi in C", Addison Wesley
Cercalo sul sito di Pearson Education Italia (http://hpe.pearsoned.it/) e vedi se fa al caso tuo.
Puoi anche cercare sul sito dell'Association of C and C++ Users (http://www.accu.org/) e leggere il loro elenco di libri: c'è anche l'indicazione se ACCU lo raccomanda o no.
Grazie. Ho preo ieri il Sedgewick in biblioteca, me lo sono già cominciato a leggere.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.