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
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