PDA

Visualizza la versione completa : [c] struttura dinamica


Lucked
14-06-2004, 12:46
Per me il c è abbastanza misterioso, adesso ho fatto questa prova. Vedere il listato sotto.
in questo modo ho creato una struttura dinamica?
il modo di accedervi penso sia corretto, l'ho trovato su un libro.
Ho però, questa domanda:
la malloc non sa che stà creando una struttura, la malloc crea solo uno spazio di memoria contiguo, sizeof restituisce un numero....ma allora come è possibile accedere ai campi?? Il compilatore come fa a sapere questa informazione? :confused:



#include <stdio.h>
int main()
{

struct s{
char ch;
int i;
double f;
};


struct s *p;
p = (struct s*)malloc(sizeof(struct s));
p->i = 19;
printf("%d", p->i);
getch();
return 0;
}

Lucked
14-06-2004, 12:58
forse questa scritta: p->i
corrisponde solo a uno spostamento di una certa distanza, che il compilatore ha già imparato dalla dichiarazione della struttura, e quindi p->i è per come lo vede il compilatore solo una locazione di memoria che dista "tot" da p.

cioè un indirizzo. qualcosa di questo tipo:


|
|---------ch(indirizzo di ch)
|
|-----------------------------i(indirizzo di i)
|
|-----------------------------------------------------f(ind. di f)

Loading