PDA

View Full Version : [C]Dubbio puntatori


DrZoidberg
04-04-2008, 14:47
salve a tutti,
abbiamo il seguente dubbio riguardo l'utilizzo dei puntatori!!!
Abbiamo il seguente codice funzioneA.c:

typedef struct paperino {
int a;
....
} com ;

com *c; //dichiarata globale

c = malloc(sizeof(struct paperino));
c->a = 10;
...
...
write(fd,c,sizeof(struct command *);

Quindi scriviamo nella fifo fd l'indirizzo della struct puntata a c;

In un altro listato funzioneB.c abbiamo quest'altro codice:

com *c;
read(fd,c,sizeof(struct command *);

printf("%d\n",c->a);


Quindi, avendo passato l'indirizzo della struct in modo esatto, se nella funzioneB accedo ai campi della struct, dovrei trovare il valore che ho scritto nella funzioneA!!!
In pratica,la printf nella funzioneB dovrebbe stamparmi 10 !!!

Ma tutto ciņ non avviene!!! Come mai??
Spero che qualcuno ci illumini!!!!!!!!!!!!!!!!!!!!!!!!!

Grazie

andbin
04-04-2008, 15:48
salve a tutti,
write(fd,c,sizeof(struct command *);

Quindi scriviamo nella fifo fd l'indirizzo della struct puntata a c;No, scrivi il contenuto della struttura puntata da 'c'. Cosa č struct command?? (che non hai menzionato prima).

E comunque per la dimensione dovresti mettere sizeof(*c) oppure sizeof(com) o sizeof(struct paperino). Insomma ... la dimensione della struttura puntata da 'c'.

In un altro listato funzioneB.c abbiamo quest'altro codice:

com *c;
read(fd,c,sizeof(struct command *);

printf("%d\n",c->a);Idem come sopra.