|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2007
Messaggi: 467
|
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? |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12939
|
Quote:
In particolare: Codice:
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;
}
|
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
|
In C?
Se accedi direttamente a una struct, userai il . Se invece ci accedi attraverso un puntatore, userai il -> Ad esempio: Codice:
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;
}
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2011
Messaggi: 2013
|
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ì : Codice:
struct PuntoCartesiano
{
int x ;
int y ;
} ;
__________________
CPU: Intel i5 2500k; GPU: Asus GTX 970 ; Scheda audio: Asus Xonar U7; RAM: 16GB DDR3; Storage: HD 750GB+SSD Samsung 840 (128GB); OS: Arch Linux | Linux Mint 18 | Win 7 (gaming) Thread ufficiali |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2007
Messaggi: 467
|
Perche' c'e' il typedef prima...
Comunque grazie ora ho capito. 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) |
|
|
|
|
|
#6 | |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21980
|
Quote:
esempio Codice:
struct PuntoCartesiano
{
int x ;
int y ;
} ;
PuntoCartesiano var1;
PuntoCartesiano *var2;
var1.x=5;
var2->x=5; che è l'equivalente di *var2.x=5;
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
|
La scanf() richiede l'indirizzo, quindi si, serve l'&.
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO |
|
|
|
|
|
#8 |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21980
|
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
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:44.




















