Newsgroup: it.comp.lang.c
Titolo: Struttura(chiarimento)

Allora... rieccomi a riparlare di struttura.... allora quando io definisco
il modello della struttura(template), non viene allocata niente in
memoria....
Quando dichiaro invece una variabile di tipo struct STRUTTURA allora viene
allocata memoria e questa è 'predisposta' per contenere i tipi dei campi
dichiarati all' interno della struttura.
Fin qua tutto ok??
ora se io creo un puntatore di tipo struct STRUTTURA allora il puntatore è
predisposto a contenere l' indirizzo di una variabile struct STRUTTURA.
Su un altro thread ho visto che non c' è bisogno di inizializzare il
puntatore con l' indirizzo di una variabile struct STRUTTURA per utilizzare
i campi di quest' ultima, ma basta allocare una memoria grande quanto la
struttura e assegnare l' inizio di tale area al puntatore di tipo struct
STRUTTURA.
A questo punto è possibile utilizzare i campi della struttura anche se al
puntatore non è stato assegnato con l' indirizzo di una variabile struct
STRUTTURA.
E fin qui tutto ok??
Se la risposta è SI,
mi chiedo: come è possibile riferirsi ad un campo di una struttura se l'
indirizzo assegnato al puntatore non è quello di una variabile di tipo
struct STRUTTURA???
Spero di non aver fatto troppi giochi di parole... in ogni caso se non avete
capito qualcosa ditemelo ;-)
aspetto vostre risposte ciao ....

 aspetto vostre risposte ciao ....
io spero di non aver fatto confusione...
cmq se ci sono rettifiche son gradite!
cya'

 struct STRUTTURA???
s1 contiene l'indirizzo della pima cella di memoria libera, i campi al suo
interno poi vengono
posizionati attraverso l'offset, non e' che ognuno di questi punta ad una
propria cella
quindi quando fai s1->a (o s1.a dipende dalla dichiarazione)
vorrai dire che scriverai nella cella puntata da s1, se invece fai s1.b
scriverai nella cella puntata da s1 + l'offset di una dimensione pari alla
dimensione di a, in questo caso un byte
quindi scriverai nella cella consecutiva a quella puntata da s1.
so di non aver utilizzato un bellissimo italiano, xò spero che hai capito
;o)
Ciauz

 problemi relativi all'alineamento dei dati...)
No, al contrario: e` a volte possibile farlo in pratica, ma in teoria e` 
sbagliato. Le due struct sono tipi diversi.
-- 
Enrico 'Trippo' Porreca

 sbagliato. Le due struct sono tipi diversi.
forse non ci siamo capiti...
cioe', che sia sbagliato e' vero, che sia possibile farlo anche.
il punto e' che volevo fargli capire di come non centri nulla l'area di
memoria allocata con il tipo della struttura.
o meglio centra quando la uso, ma io non devo allocare un area di memoria di
quel tipo, basta che sia un area di memoria,
sara' poi quando la uso che dovro' dire come usarla, ma sempre di celle
contigue si tratta!!!
non riesco a spiegarmi bene, ma se leggi bene i suoi dubbi, sia in questo
thread che nel precedente ("struct e aree di memoria")
capirai quello che intende lui, e se riesci a spiegarglielo tu in maniera
migliore buon per lui :o)
lui pensa che per STRUTTURA1 dovro' allocare un area di tipo STRUTTURA1, ma
non e' cosi (e tu lo saprai certamente meglio di me ;o)
in realta' io alloco solo un'area di memoria, e' quando poi la utlizzo che
dovro' dirgli come dev'essere utilizzata e quindi dirgli che li dentro
i dati sono organizzati in modo STRUTTURA1....

 i dati sono organizzati in modo STRUTTURA1....
Questo discorso e` pero` formalmente adeguato solo per la memoria 
ottenuta tramite malloc(), che (una volta fornita la dimensione 
corretta) e` adatta a contenere qualsiasi tipo di dato. Invece (per 
quanto riguarda lo standard) la memoria automatica e statica di tipo x 
va bene solo per contenere dati di tipo x.
In conclusione, quello che dici e` si` corretto, ma non e` in genere 
applicabile...
-- 
Enrico 'Trippo' Porreca