View Full Version : domanda sulla struct
una domanda semplice su una cosa che mi e' sempre stata molto vaga...
Per accedere a un campo della struct, quando bisogna usare "." e quando "->"... Chi me lo spiega una volta per tutte? :D
una domanda semplice su una cosa che mi e' sempre stata molto vaga...
Per accedere a un campo della struct, quando bisogna usare "." e quando "->"... Chi me lo spiega una volta per tutte? :D
Il punto si usa quando vuoi accedere ai membri di una struttura vera e propria, la freccia quando vuoi accedere attraverso un puntatore a quella struttura.
In particolare:
typedef struct _class
{
int x;
} Class;
int main(void)
{
Class c;
c.x = 7;
Class* p = &c; // p puntatore a c
p->x = 8;
printf("%d\n", c.x); // stampa 8
return 0;
}
In C?
Se accedi direttamente a una struct, userai il .
Se invece ci accedi attraverso un puntatore, userai il ->
Ad esempio:
typedef struct MyStruct
{
int a;
int b;
} MyStruct;
void f()
{
MyStruct test;
MyStruct * ptr = &test;
// Accesso diretto
test.a = 2;
// Accesso tramite puntatore. Le due operazioni sono equivalenti.
ptr->a = 2;
}
IngMetallo
25-05-2011, 14:35
Scusate ma a cosa serve ripetere il nome dello struct dopo la chiusura delle parentesi graffe ?!
Io (che programmazione ho cominciato a studiarla solo 3 mesi fa xD) ho sempre fatto cosė :
struct PuntoCartesiano
{
int x ;
int y ;
} ;
Senza mettere nulla dopo la parentesi graffa di chiusura.. :confused:
Perche' c'e' il typedef prima...
Comunque grazie ora ho capito. :D
un'altra domanda: nello scanf, se devo mettere il dato di input in un campo della struct... devo mettere il & o no? Esempio:
scanf("%d", x->dato)
Perche' c'e' il typedef prima...
Comunque grazie ora ho capito. :D
un'altra domanda: nello scanf, se devo mettere il dato di input in un campo della struct... devo mettere il & o no? Esempio:
scanf("%d", x->dato)
no non serve
esempio
struct PuntoCartesiano
{
int x ;
int y ;
} ;
PuntoCartesiano var1;
PuntoCartesiano *var2;
var1.x=5;
var2->x=5; che č l'equivalente di *var2.x=5;
La scanf() richiede l'indirizzo, quindi si, serve l'&.
La scanf() richiede l'indirizzo, quindi si, serve l'&.
leggere meglio, leggere meglio leggere meglio leggere meglio leggere meglio leggere meglio leggere meglio leggere meglio leggere meglio leggere meglio leggere meglio leggere meglio leggere meglio leggere meglio leggere meglio leggere meglio leggere meglio leggere meglio leggere meglio
non avevo proprio visto la scanf :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.