// MODALITA' DI DEFINIZIONE DI UNA STRUTTURA


// (A) definisco solo una variabile:

struct {
  int a;
  float b;
  char *c;
 } a;  // a e' una variabile non un tipo di dato!

// (B) definisco il tipo e una variabile:

struct esempio{
  int a;
  float b;
  char *c;
 } b; // esempio e' il tipo di dato,
      // b e' la variabile

// (C) definisco il tipo di dato e dopo la varibile

struct esempio2{
  int a;
  float b;
  char *c;
 }; // esempio2 e' il tipo di dato

struct esempio2 c; // c e' la variabile

// (D) uso diretto di typedef:

typedef struct{
  int a;
  float b;
  char *c;
 } ESEMPIO3; // ESEMPIO3 e' il tipo di dato

ESEMPIO3 d; // d e' la variabile

// Si puo' notare che strutture diverse possono contenere variabili
// con lo stesso nome.
//Inoltre (in C ma non in C++):

struct x{
 int x;
 } x;

struct x funzioneX(struct x x){
  return x;
 }

int main(int argc, char **argv){

 // ATTENZIONE la seguente riga non e' ammessa
 d=c;

 return 0;
}