No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Uniones y enumeraciones

6/16
Recursos

Aportes 6

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Los punteros parecen ser una de las cosas más complicadas que entender de C++ como lenguaje de bajo nivel.

Siempre he sido de las personas que necesita encontrar un sentido práctico a lo que aprende para poder retenerlo.

Los punteros son de gran ayuda cuando quieres pasar más de 1 parámetro entre funciones, si lo piensas bien las funciones en c++ permiten pasarle varios argumentos a una función, pero esta solo tiene 1 return.
Intenta desarrollar un programa donde utilices los punteros como medios para retornar “Sacar” más variables de un llamado a función.

Les dejo el código 😃

  • Unions:
#include <iostream>
#include <string>

using namespace std;

int main() {
  union number_letter {
    int number;
    char letter;
  };

  number_letter x = {'a'};
  number_letter y = {9};

  cout << x.letter << endl;
  cout << y.number << endl;
}
  • Enumerations:
#include <iostream>
#include <string>

using namespace std;

int main() {
  enum days_of_week { monday = 'M', tuesday = 'T', friday = 'F' };
  days_of_week day = monday;
  cout << day << endl;
}

Quería saber cuál era el uso de los “unions” y encontré esto en StakOverFlow:

The purpose of union is to save memory by using the same memory region for storing different objects at different times. That’s it.

Es decir, según esto, sirven para poder guardar varios datos de varios tipos que no se usarán a la vez y así no tener la necesidad de usar memoria extra para hacerlo. Sirve para ahorrar memoria

Mi codigo 🤯:

#include <iostream>
#include <string>

using namespace std;

int main() {

    // Union

    union number_letter {
        int number;
        char letter;
    };

    number_letter x = { 'A' };

    cout << "X as a number: " << x.number << endl;
    cout << "X as a letter: " << x.letter << endl;

    // Enums

    enum weekdays {
        monday = 'M',
        tuesday = 'T',
        wednesday = 'W',
        thursday = 'H',
        friday = 'F',
        saturday = 'S',
        sunday = 'D'
    };

    weekdays day = monday;
    cout << (char) day;

Aqui hago una comprobacion de como el valor de un union se reasigna si modificas una de las variables internas. Tambien hago la comprobacion de que es la misma direccion de memoria independientemente del tipo de variable que contenga que decidas consultar.
.

los punteros sirven para referenciar valores todo el tiempo ;

aqui aunque hayamos cambiando el valor de sonata mercedes tendra el mismo valor que sonata.

cosa que si no fuera puntero , se hiviera quedado con el primer valor


class vehiculo
{
public:
	
	int numero;
};


int main()
{

	vehiculo sonata = vehiculo();
	sonata.numero = 10;
	vehiculo *Mercedes = &PadreSonata;

	PadreSonata.numero = 15;

	cout << sonata.numero << endl;
	cout << mercedes->numero;
}