• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto Chiarimento sulle struct

pe.pp.e

Utente Medio
Autore del topic
10 Aprile 2012
101
0
Miglior risposta
0
Salve a tutti.Come da titolo mi servirebbe un chiarimento sulle struct,dato che le sto studiando da pochissimo.Ho difficoltà nel capire come utilizzarle in modo corretto.Per farvi capire meglio i miei dubbi posterò due codici dove non riesco a spiegarmi il funzionamento corretto.Ad esempio se io scrivo:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

perchè non mi viene visualizzato 12 e mi da un'errore??

Mentre se scrivo così:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

perchè mi viene visualizzato 12???

Probabilmente non ho molto le idee chiare riguardo l'argomento,quindi spero che possiate aiutarmi voi.Grazie in anticipo!!!!
 
Riferimento: Chiarimento sulle struct

perchè non mi viene visualizzato 12 e mi da un'errore??

Perché hai "riempito" la struttura in modo sbagliato. Che errore visualizzi ?

Mentre se scrivo così:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

perchè mi viene visualizzato 12???

Non visualizzi nessun errore avviando questo codice ?

Probabilmente non ho molto le idee chiare riguardo l'argomento,quindi spero che possiate aiutarmi voi.Grazie in anticipo!!!!

Rispondi prima alle mie domande, poi dopo ti spiego come funzionano le strutture.
 
Riferimento: Chiarimento sulle struct

struct esempio{
char *nome;
char *cognom;
char array[100];
};

ho sbagliato la dichiarazione dell'array nella struct....ho corretto e l'ho chiamato "array".Ora il codice va senza problemi,però i dubbi restano....
 
Riferimento: Chiarimento sulle struct

E' una struttura dati, statica, che puo' memorizzare
al suo interno dati di diverso tipo (array, variabili, ecc.).

Se ti serve altro dimmi...
 
Riferimento: Chiarimento sulle struct

il primo codice

struct esempio{
char *nome;
char *cognom;
char array[100];
};

void main(){

struct esempio *a,b=12;
a=&b;
printf("%d",a->array[0]);
}

allora nel main punti la struttura con a
>
quindi a b al puntatore nome avrà il valore di 12 (tanto x info potevi usare un puntatore a int non essendo una stringa)

a=&b 'punta a b e gli altri valori nulla

printf("%d",a->array[0]) stampi l'elemento 0 array della struttura esempio puntata da a che è nessuno (l'errore è oggetto/dato inesistente) ... tanto per farti mente locale l'istruzione equivale a (*a).array[0] .-. effettivamente in b hai inizializzato pure male perchè 12 è un numero non una stringa!

2° esempio che proponi

struct esempio{
char *nome;
char *cognom;
char tutto[100];
};

void main(){

struct esempio *a,b={"luigi","rossi",12}; ' crei il puntatore alla struttura a e inizialmente non assegni nnt, crei b e assegni alla stringa nome
a=&b;
printf("%d",a->array[0]);
}

ripartiamo dall'inizio

struct esempio *a,b={"luigi","rossi",12}; ' crei il puntatore alla struttura a e inizialmente non assegni nnt, crei b e assegni alla stringa
nome luigi , all' elemento cognome rossi e a tutto assegni 12 xo a array[0] (ti ricordo l'array contano da 0) , n.b sintatticamente ci vogliono le virgolette " " si tratta di stringa no di un numero

ti ricordo una cosa importante sui puntatori da non scordarti un puntatore a char inizializza i propri membri in questo modo

*(nome + 0)='l'
*(nome + 1)='u'

e cosi via quindi fare una cosa del genere char *text
text="nessuno" se lo fai con un array char è sbagliato

seconda istruzione :

a=&b punta tutto quello in b (che ho spiegato sopra) in a

printf("%d",a->array[0]); stampa il valore intero (errato devi usare %s , è un valore alfanumerico) stampa comunque a->array[0] cioe quello riempito con 12 però è riempito nell'inizializzione di b e non a (ricorda è un puntatore e punta ai valori di b)

Spero di averti chiarito i dubbi che tenevi :emoji_smiley:
 
Ultima modifica:
Riferimento: Chiarimento sulle struct

Grazie a tutti.Finalmente ho le idee più chiare.La discussione per me si può chiudere!!!! ;)