3.283 cursos gratis
6.262.044 alumnos
Publica tu curso gratis
Busca cursos gratis:
Estás aquí: mailxmail > Cursos de Informática > Programación > Programación en C++ > Estructuras y uniones

Programación en C++

Autor: Josue Diaz Cuenca
Curso:  4,45/5 4,45/5 (454 opiniones) |38809 alumnos|Fecha publicación: 04/06/2004

Capítulo 9:

 Estructuras y uniones

Estructuras y uniones

Los tipos definidos por el usuario se definen como estructuras, uniones, enumeraciones o clases. Las estructuras y uniones son tipos de clase (clase, es el tipo de dato fundamental en la programación orientada a objetos).

El tipo struct permite agregar componentes de diferentes tipos y con un solo nombre. Las estructuras en C++ se declaran como en C:
struct datos
{
int num;
char nombre[20];
};

El nuevo tipo de dato definido puede tener instancias que se declaran:datos persona; //declaración C++struct datos persona; // declaración C

En C++ debe evitarse el uso de typedef.

El mismo convenio aplicado a las estructuras, se aplica a las uniones.

Un tipo especial de unión se ha incorporado a C++ :unión anónima. Una unión anónima declara simplemente un conjunto de elementos que comparten la misma dirección de memoria; no tiene nombre identificador y se puede acceder directamente a los elementos por su nombre.
Un ejemplo:
union
{
int i;
float f;
};

Tanto i como f comparten la misma posición de memoria. A los miembros de esta unión se puede acceder directamente en el ámbito en que está declarada. Por tanto, en el ejemplo, la sentencia i=3 sería aceptable.

Las uniones anónimas son interesantes en el caso en que se defina una unión en el interior de una estructura:
struct registro
{
union
{
int num;
float salario;
};
char *telefono;
};
registro empleado;

Para acceder al nombre de un campo dentro de esta estructura:

empleado.sueldo;

Asignación dinámica de memoria: new y delete

En C la asignación dinámica de memoria se manipula con las funciones malloc() y free(). En C++ se define un método de hacer asignación dinámica utilizando los operadores new y delete.

En C:
void main()
{
int *z;
z= (int*) malloc(sizeof(int));
*z=342;
printf("%d\n",*z);
free(z);
}

En C++:
void main()
{
int *z=new int;
*z=342;
cout << z;
delete z;
}

El operador new está disponible directamente en C++, de modo que no se necesita utilizar ningún archivo de cabecera; new se puede utilizar con dos formatos:new tipo // asigna un único elemento

new tipo[num_eltos] // signa un array

Si la cantidad de memoria solicitada no está disponible, el operador new proporciona el valor 0. El operador delete libera la memoria signada con new.
delete variable
delete [n] variable

new es superior a malloc por tres razones: 
1.- new conoce cuánta memoria se asigna a cada tipo de variable.
2.- malloc() debe indicar cuánta memoria asignar.
3.- new hace que se llame a un constructor para el objeto asignado y malloc no puede.

delete produce una llamada al destructor en este orden:
1. Se llama al destructor
2. Se libera memoria

delete es más seguro que free() ya que protege de intentar liberar memoria apuntada por un puntero nulo.

Recibe nuestras novedades
Al presionar "Recibir" estás dándote de alta y aceptas las condiciones legales de mailxmail

Hay 454 opiniones. Opina sobre este curso.


Cursos similares a Programación en C++


Cursos Valoración Alumnos Vídeo
Funciones en C (primera parte)
Curso de programacíon informática sobre Funciones en C en el orden de los fundamentos de la programación. Comprende el desarrollo de un software utilizando funciones y a ... [17/10/08]
 4,50/5 2.816  
C# Curso de Programación
Curso Básico de programación en C#, este curso básico abarcará desde las bases del lenguaje hasta nuestros primeros pasos con aplicaciones web, acceso a bases de datos de... [14/07/05]
 3,50/5 8.486  
Informática. Desarrollo científico del ordenador
Ordenador, ciencia e informática son las claves de este curso. Conoce el desarrollo científico que hay detrás de una computadora u ordenado... [10/07/09]
5/5 4.375  


Publicar en   del.icio.us    digg    meneame

¿Qué es mailxmail.com?|ISSN: 1699-4914|Recomiéndanos|Ayuda
Condiciones legales de mailxmail