Tipos de datos, structs y unions

  1. El primer programa en C++:


    #include <iostream>
    using namespace std;

    int main()
    {
      cout << "¡Hola, mundo!" << endl;
      return 0;
    }

  2. Los tipos de datos básicos (int, float, double char ...), y punteros


    int x = 5;
    int *ptrx = &x;
    *ptrx = 56;
    cout << x << endl; // Imprime 56

  3. Las estructuras:


    #include <iostream>

    using namespace std;

    struct Complejo {
      double real;
      double imaginaria;
    };

    int main()
    {
      Complejo c1;

      c1.real = 1;
      c1.imaginaria = 2;

      cout << c1.real << ',' << c1.imaginaria << 'i' << endl;
      return 0;
    }


  4. y las uniones, que son esas estructuras extrañas cuyos miembros empiezan todos en la misma posición:


    #include <iostream>

    using namespace std;

    union Mezcla {
      int x;
      char byteMenosSignificativo;
    };

    int main()
    {
      Mezcla e1;

      e1.x = 1;

      cout << "El byte menos significativo es: " << e1.byteMenosSignificativo << endl;
      return 0;
    }
El uso que se le suele dar a las uniones es el mismo que en Pascal se le da a las estructuras variantes, es decir, estructuras que pueden contener diferentes subestructuras según alguna condición que se dé en la misma.

struct Persona {
  int edad;
  enum TipoTrabajo { Autonomo, CuentaAjena };
  TipoTrabajo tipoTrabajo;
  union InfoTrabajo {
    int numHorasTrabajadas;
    struct Autonomo {
        int numHorasTrabajadas;
        int numHorasDeBaja;
    };
  };
};

En el ejemplo, según el valor del campo tipoTrabajo, se accederá a InfoTrabajo.numHorasTrabajadas o a InfoTrabajo.Autonomo.numHorasTrabajadas .. . etc. La mayor ventaja es que la información dentro de la unión para trabajadores por cuenta ajena comparte memoria con la información para trabajadores autónomos.