|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
[C] Problema con le strutture
Ciao a tutti, vi chiedo di chiarirmi una cosa che per voi sarà sicuramente banale!
Allora quando io definisco una struttura, per esempio: typedef struct data { int valore; char nome[]; } dopo io ho un nuovo tipo che si chiama data giusto? e se scrivo: data x; x sarà una variabile di tipo data come da me definita, ho capito bene? Ora, ho visto che a volte viene abbrievieta in questo modo: typedef struct data { int valore; char nome[]; }x; Ottengo lo stesso risultato? Poi infine, se scrivo: typedef struct { int valore; char nome[]; }data; cosa ottengo?Ho notato anche che viene usaata quest'ultima notazione a volte... grazie |
|
|
|
|
|
#2 | ||||
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Quote:
struct data x; Quote:
struct data e "x" (che è un typedef del precedente). Puoi scrivere ovvero indifferentemente struct data myvar; oppure x myvar; Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
||||
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Grazie sei stato velocissimo.
Allora il metodo corretto è questo se ho capito bene, la parola che ho messo in grassetto si chiama etichetta della struttura giusto? e non sempre sembra essere necessaria, allora ti chiedo, quando la devo mettere e quando no? typedef struct data { int valore; char nome[]; }x; |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
typedef struct data { int valore; char nome[]; } data;
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Ma ti spiego, sto studiando le liste, e vengono utilizzate le strutture tutte definite senza omettere l'etichetta, c'è un motivo?
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Ah sì; le liste sono forse l'unico caso dove è obbligatorio utilizzare una struttura non anonima. Questo perché non puoi usare il tipo definito nel typedef durante...la sua dichiarazione.
Questo ad esempio è legale: Codice:
typedef struct data {
int x;
struct data *prev, *next;
} data;
Codice:
struct data {
int x;
struct data *prev, *next;
};
Codice:
typedef struct {
int x;
data *prev, *next;
} data;
Codice:
typedef struct data {
int x;
data *prev, *next;
} data;
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Capito! grazie mi sei stato di grande aiuto!
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Dec 2005
Città: Carate Brianza
Messaggi: 51
|
mmmm... anche io sto studiando le le liste (ora gli alberi in realtà)...
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:02.



















