Ciao a tutti, sono nuovo.
Sto studiando C ed avevo due domande:
Si possono confrontare due strutture?
I membri di una struttura sono memorizzati in modo sequenziale in memoria(uno dietro l'altro)?
Ciao a tutti, sono nuovo.
Sto studiando C ed avevo due domande:
Si possono confrontare due strutture?
I membri di una struttura sono memorizzati in modo sequenziale in memoria(uno dietro l'altro)?
Dipende dalla struttura ... se ci sono puntatori, no.
No MP tecnici (non rispondo nemmeno!), usa il forum.
Una struttura del genere va bene?(Le variabili sono messe in memoria una dietro l'altra o ci sono dei buchi?)
Quando faccio il confronto mi dice: Illegal operationcodice:typedef char stringa[50]; typedef struct record{ stringa nome; stringa cognome; int anno; stringa id; }record;
E come lo fai il confronto?
No MP tecnici (non rispondo nemmeno!), usa il forum.
Chiaramente facendo s == s1![]()
"Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)
"Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)
http://xvincentx.netsons.org/programBlog
Ovviamente, così non va bene.Originariamente inviato da XWolverineX
Chiaramente facendo s == s1![]()
Si deve usare la funzione memcmp avendo cura che le strutture da confrontare siano inizializzate a zero (con una memset).
No MP tecnici (non rispondo nemmeno!), usa il forum.
Su alcune architetture però ci potrebbero essere dei buchi, per esempio se il processore richiede che gli interi siano allineati a 64 bit.
Amaro C++, il gusto pieno dell'undefined behavior.
Si possono usare apposite pragma per l'allineamento.Originariamente inviato da MItaly
Su alcune architetture però ci potrebbero essere dei buchi, per esempio se il processore richiede che gli interi siano allineati a 64 bit.
No MP tecnici (non rispondo nemmeno!), usa il forum.
Certamente (e infatti gli header di Windows sono pieni di #pragma packed o roba del genere, specie per gli header dei file), dico solo che quella struttura scritta così senza aggiungerci altro potrebbe avere dei buchi nel suo layout in memoria.
Qui un interessante articolo sull'argomento del solito Raymond Chen.
Amaro C++, il gusto pieno dell'undefined behavior.
azzerando le strutture con una memset anche i buchi saranno tutti a zero, quindi non influiscono sul confronto con la memcmp