francowr
14-04-2006, 22:39
Ciao a tutti ragazzi,
ho il seguente problema. Se scrivo il seguente programma con C:
Codice:
#include <stdio.h>
main()
{
struct pap {int pippo;
int pluto;
union {
long * integer;
char * tizi;
} val;
};
struct pap *prova;
struct pap pp;
prova = &pp; // sono costretto ad inizializzarlo
prova->pluto=45;
*prova->val.integer=4;
printf ("Valore= %d\n", prova->pluto);
printf ("Valore= %ld\n", *prova->val.integer);
return 0;
}
In linux lo compilo e riesco pure a far girare l'esegubile poi.
nel seguente programma invece (che evolve dal precedente, ho scritto + a destra solo le righe che ho aggiunto):
Codice:
#include <stdio.h>
main()
{
struct pap {int pippo;
int pluto;
union {
long * integer;
char * tizi;
} val;
};
struct pap *prova;
struct pap pp;
struct pap *prova2;
struct pap pp2;
prova = &pp; // sono costretto ad inizializzarlo
prova->pluto=45;
*prova->val.integer=4;
printf ("Valore= %d\n", prova->pluto);
printf ("Valore= %ld\n", *prova->val.integer);
prova2 =&pp2;
*prova2->val.integer=3;
printf ("Valore= %ld\n", *prova2->val.integer);
return 0;
}
In questo caso lo compilo sempre ma l'eseguibile va in Segmentation fault; che cosa sbaglio???
GRAZIE!!!! CIAO
ho il seguente problema. Se scrivo il seguente programma con C:
Codice:
#include <stdio.h>
main()
{
struct pap {int pippo;
int pluto;
union {
long * integer;
char * tizi;
} val;
};
struct pap *prova;
struct pap pp;
prova = &pp; // sono costretto ad inizializzarlo
prova->pluto=45;
*prova->val.integer=4;
printf ("Valore= %d\n", prova->pluto);
printf ("Valore= %ld\n", *prova->val.integer);
return 0;
}
In linux lo compilo e riesco pure a far girare l'esegubile poi.
nel seguente programma invece (che evolve dal precedente, ho scritto + a destra solo le righe che ho aggiunto):
Codice:
#include <stdio.h>
main()
{
struct pap {int pippo;
int pluto;
union {
long * integer;
char * tizi;
} val;
};
struct pap *prova;
struct pap pp;
struct pap *prova2;
struct pap pp2;
prova = &pp; // sono costretto ad inizializzarlo
prova->pluto=45;
*prova->val.integer=4;
printf ("Valore= %d\n", prova->pluto);
printf ("Valore= %ld\n", *prova->val.integer);
prova2 =&pp2;
*prova2->val.integer=3;
printf ("Valore= %ld\n", *prova2->val.integer);
return 0;
}
In questo caso lo compilo sempre ma l'eseguibile va in Segmentation fault; che cosa sbaglio???
GRAZIE!!!! CIAO