curso c++: variables y tipos - laboratorio ss.oo...

Post on 25-Sep-2018

233 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Curso C++:Variables y Tipos

Jorge Peña Pastor

jpena@cesvima.upm.es

June 7, 2011

Jorge Peña Pastor Variables y Tipos 1/53

Variables

Representan cantidades y/o cualidades.Antes de usarlas debemos declararlas para que el compilador(o intérprete) pueda conocer:

• Su nombre• Su ámbito de vida• Su visibilidad• El tipo de datos asociado

Jorge Peña Pastor Variables y Tipos 2/53

Declaración de Variables

• Simple:

int i ;

• Múltiple:

int i , j , k ;

• Con asignación de valor inicial:

int i = 5;

int i = −133, j = i , k ;

Jorge Peña Pastor Variables y Tipos 3/53

Declaración de Variables

• Simple:

int i ;

• Múltiple:

int i , j , k ;

• Con asignación de valor inicial:

int i = 5;

int i = −133, j = i , k ;

Jorge Peña Pastor Variables y Tipos 3/53

Nombres de Variables

Deben reflejar los términos abstractos del problema.No deben ser ambiguos.El lenguaje puede restringir el nombrado:

• Identificadores correctos: {a-zA-Z_}[a-zA-Z_0-9]*• No estan permitidas variables cuyo nombre coincida con

palabras reservadas del lenguaje.• No se admiten símbolos especiales: ; " ’ ñ , ? ! ^ ~ …• Otras restricciones (ej. longitud).

Jorge Peña Pastor Variables y Tipos 4/53

Palabras Reservadas en C++

asm, auto, bool, break, case, catch, char, class, const,const_cast, continue, default, delete, do, double,

dynamic_cast, else, enum, explicit, export, extern, false,float, for, friend, goto, if, inline, int, long, mutable,

namespace, new, operator, private, protected, public,register, reinterpret_cast, return, short, signed, sizeof,static, static_cast, struct, switch, template, this, throw,true, try, typedef, typeid, typename, union, unsigned,

using, virtual, void, volatile, wchar_t, while

Jorge Peña Pastor Variables y Tipos 5/53

Ámbito de Vida

Determina durante cuánto tiempo existe una variable.• Variable global a módulo o programa:

• Existen durante todo el tiempo de ejecución.• Toman valor inicial 0 (todos sus bits a 0).

• Variable local o parámetro formal de una función:• Existen sólo durante cada llamada.• Toman valor inicial indeterminado (basura).

Jorge Peña Pastor Variables y Tipos 6/53

Visibilidad

Determina desde dónde podemos usar una variable.• Variable global al programa:

• Desde cualquier punto del programa.• Variable global a un módulo:

• Sólo desde dicho módulo.• Variable local o parámetro formal de función:

• Sólo desde dicha función.• Una variable local oculta a una global con el mismo

nombre.

Jorge Peña Pastor Variables y Tipos 7/53

Ejemplos de Ámbito y Visibilidad

int a,b; /∗ Globales ∗/void funcion(void){/∗ Las variables a y b son variables enteras ∗//∗ La variable c no existe ∗/}int main(void){float a,c ; /∗ Locales ∗//∗ Las variables a y c son reales ∗//∗ La variable b es entera ∗/}

Jorge Peña Pastor Variables y Tipos 8/53

Modificadores de Variablesconst

• Su valor no debe, y no puede, ser alterado.static

• Su valor se mantiene dentro de su ámbito.• Si global, sólo global al módulo.• Si local, conserva valor entre invocaciones.• Valor inicial 0.

register• Indica nuestra intención de ubicar la variable en un registro.• Es una pista para el compilador (no está garantizado).

volatile• El contenido de la variable podría cambiar de valor

espontáneamente por efecto de algo "externo" alprograma.

• Evita optimizaciones por parte del compilador en cuanto aacceso de memoria de la variable.

Jorge Peña Pastor Variables y Tipos 9/53

Tipos de Datos

Cada variable tiene que tener asociado un tipo que indique quées lo que contiene la variable.Determina qué opereaciones se pueden hacer sobre lavariable.Permite al compilador:

• Detectar errores• Optimizar la ejecución

Podrá ser uno de los tipos básicos proporcionados por ellenguaje o bien un tipo derivado creado por un programador.

Jorge Peña Pastor Variables y Tipos 10/53

Tipos de Datos

Se escoge según el conjunto de valores que queramos que lavariable pueda tomar.

• En algunos casos por las limitaciones del sistema.Los tipos numéricos básicos deteminan el rango de posiblesvalores

• Una variable de tipo Entero no podrá valer 3.75 (decimal).• Una variable de tipo Positivo (sin-signo) no podrá valer -1.

Jorge Peña Pastor Variables y Tipos 11/53

Tipos Básicos

Posibles contenidos de variables según el tipo con el quefueron declaradas:

Boleano: true, falseCarácter: a, A, z, Z, 1, 9, ...

Entero: −1, 33Real: 3.14, −5x10−15

Enumerado: lunes, martes ...Vectores: {4, 5, 9}, {H, o, l, a}Puntero: NULL

Jorge Peña Pastor Variables y Tipos 12/53

Entero

• Para contar o enumerar

int saldo_bancario = 1000;

• Diferentes bases de representación:

Hexadecimal(base 16): 0x0 -0x1 0xFFF 0xFea0Octal(base 8): 00 -01 07777 0177240Decimal(base 10): 0 -1 4095 65184

Jorge Peña Pastor Variables y Tipos 13/53

Modificadores de Enteros

De Signo:• signed: Valores positivos y negativos.

signed int var ; 32 bits : /∗−2147483648 a 2147483648∗/

• unsigned: Sólo valores positivos.

unsigned int var ; /∗32 bits : 0 a 4294967295∗/

Si no se indica nada es signed

int var ; 32 bits : /∗−2147483648 a 2147483648∗/

Jorge Peña Pastor Variables y Tipos 14/53

Modificadores de Enteros

De Signo:• signed: Valores positivos y negativos.

signed int var ; 32 bits : /∗−2147483648 a 2147483648∗/

• unsigned: Sólo valores positivos.

unsigned int var ; /∗32 bits : 0 a 4294967295∗/

Si no se indica nada es signed

int var ; 32 bits : /∗−2147483648 a 2147483648∗/

Jorge Peña Pastor Variables y Tipos 14/53

Modificadores de Enteros

De tamaño:• short

short int dia ; /∗ 16 bits (aprox) ∗/

• sin modificador (por defecto)

int horas; /∗ 32 bits ∗/

• long

long segundos; /∗ 32 bits (aprox) ∗/

• long long

long long micro_segundos; /∗ 64 bits (GNU C) ∗/

Jorge Peña Pastor Variables y Tipos 15/53

Modificadores de Enteros

Pueden combinarse para adaptarse a las necesidades denuestro problema:

signed long int variable ;unsigned short int variable ;

Puede omitirse el int

unsigned variable ;

El tamaño en memoria depende del compilador y de laarquitectura.Normalmente se usa simplemente int.

Jorge Peña Pastor Variables y Tipos 16/53

Booleano

Representa los valores lógicos cierto y falso.

bool hace_sol = true ;bool tengo_coche = false ;

Se utiliza para representar el resultado de operaciones lógicas(según el álgebra de Bool) y de comparación:

bool vamos_excursion = hace_sol && tengo_cochebool resultado = a > b;

Jorge Peña Pastor Variables y Tipos 17/53

Booleano

Representa los valores lógicos cierto y falso.

bool hace_sol = true ;bool tengo_coche = false ;

Se utiliza para representar el resultado de operaciones lógicas(según el álgebra de Bool) y de comparación:

bool vamos_excursion = hace_sol && tengo_cochebool resultado = a > b;

Jorge Peña Pastor Variables y Tipos 17/53

Carácter

Son valores numéricos de tamaño 1 byte (128 tipos).Representan caracteres según una convención dada (códigoASCII o Latin1).

• Constante entre comillas simples (apóstrofe ’)

char letra = ’a ’ ;

• Secuencias de escape:

char retorno = ’ \n ’ ;char tabulador = ’ \ t ’ ;

• Valor numérico:

char arroba = ’ \100 ’ ; /∗ Codigo ASCII de @ en octal∗/

Jorge Peña Pastor Variables y Tipos 18/53

Real

Números positivos o negativos con o sin decimales.También llamdos de “coma flotante”.Representación interna distinta a la del entero.Notación decimal o científica

Jorge Peña Pastor Variables y Tipos 19/53

Tipos de Reales

Tres tamaños:• float (precisión simple).

float medida = 2.3 f ;float distancia = 42E−11;

• double (doble precisión).

double valor = 4.22;

• long double (precisión extendida).

long double PI=3.14159265358979323846;

El valor exacto depende de cada implementación peronormalmente float 32 bits, double 64 y long double 128 bits.

Jorge Peña Pastor Variables y Tipos 20/53

Conversión de Tipos

¿Qué pasa cuando combinamos tipos diferentes?• int y float• int y bool• float y double

Existen 2 mecanismos:• Conversión automática• Conversión explícita

Jorge Peña Pastor Variables y Tipos 21/53

Conversión Automática

La hace automáticamente el compiladorEs segura siempre que sepamos que la conversión que va ahacer el compilador es la que nos interesa.Promoción

• De un “tipo” menor a un tipo “mayor”

float valor = 2; / / 2 se convierte en 2.0

Degradación

int valor = 2.2; / / 2.2 se convierte en 2

Jorge Peña Pastor Variables y Tipos 22/53

Conversión Explícita de Tipo

Casting: mecanismo para explicitar el cambio de tipo deuna expresión o variable.

Le indicamos al compilador que asumimos la responsabilidadExisten 2 formas:

• Castings de C:• (tipo)variable• tipo(variable)

• Castings de C++:• static_cast• dynamic_cast• const_cast• reinterpret_cast

Jorge Peña Pastor Variables y Tipos 23/53

Ejemplos de Conversión de Tipos

float f = 65.2;float g = ( int ) 65.2; / / g vale 65.0float h = 3/2; / / h vale 1.0float i = ( float )3/( float )2 / / i vale 1.5float k = static_cast<int >(65.2); / / k = 65.0

Jorge Peña Pastor Variables y Tipos 24/53

Conversión de Bool

Las expresiones condicionales o booleanas, se conviertenautomáticamente utilizando las siguiente normas:

• Si la expresión vale 0, entonces es falso, si no, es cierto.• Los valores booleanos true y false se convierten en 1 y 0

cuando se hace el casting a int• Para pasar de int a bool se sigue la misma norma que para

las expresiones: 0 es false y el resto de enteros true

Jorge Peña Pastor Variables y Tipos 25/53

Operadores Aritméticos

+ Suma- Resta* Multiplicación/ División

% Módulo (resto)++ Auto-incremento (pre ó post)

– Auto-decremento (pre ó post)

Jorge Peña Pastor Variables y Tipos 26/53

Ejemplo Operadores Aritméticos

int a = 5 − (2 ∗ 2); int b; float f ;a++; /∗ a = a + 1 ∗/a=3; b=a++; /∗ a=4 b=3 ∗/a=3; b=++a; /∗ a=4 b=4 ∗/a=3; b=a−−; /∗ a=2 b=3 ∗/f =4/3; /∗ f == 1 Div . entera ∗/b=4%3; /∗ b == 1 == (4 − (4/3)∗3) ∗/f =4.0/3; /∗ f == 1.333 Div . real ∗/f =(float )4/3; /∗ f == 1.333 Div . real ∗/for ( int i =0; i <10; i ++) / / Realiza 10 veces el bucle

Jorge Peña Pastor Variables y Tipos 27/53

Operadores de Asignación

Provienen de la combinación de operadores aritméticos con eloperador de asignación:

+=, -=, *=, /=, %=

Algunos ejemplos:

int a = 5, b = 2;a ∗= 2; /∗ a = a ∗ 2; a = 5 ∗ 2; a = 10 ∗/a /= b + 3; /∗ a = a / (b+3); a = 10 / (2+3); a = 2; ∗/

Jorge Peña Pastor Variables y Tipos 28/53

Operadores de Comparación yLógicos

== Igual! = Distinto> Mayor

>= Mayor o igual< Menor

<= Menor o igual&& AND lógico|| OR lógico! NOT lógico

Jorge Peña Pastor Variables y Tipos 29/53

Operadores de Comparación yLógicos

int a = 3, b= 2, c=4, d=1;i f (a>b) /∗ cierto ∗/i f (a>b | | a>c) /∗ cierto ∗/i f (a>b && c>d) /∗ cierto ∗/bool a = false ;I f (a == b) /∗ falso∗/i f ( !a) /∗ cierto ∗/

Jorge Peña Pastor Variables y Tipos 30/53

Operadores de Comparación yLógicos

Se aplican sobre tipos booleanos. Toda expresión sirve deexpresión lógica considerándose:

• FALSA si la expresión se evalúa a CERO .• CIERTA si la expresión se evalúa a cualquier otro valor.

i f (a) /∗ Identico a: i f (a != 0) ∗/i f ( !b) /∗ Identico a: i f (b == 0) ∗/

El valor resultante de evaluar operadores lógicos es• 0 sii FALSO• 1 sii CIERTO

Jorge Peña Pastor Variables y Tipos 31/53

Operadores de Comparación yLógicos

Es importante a la hora de evaluar una expresión lógica:• La precedencia de los operadores:

int a = (3>2 | | 5==4) && !1; /∗ a = 0 o FALSO) ∗/int b = (3>2 | | 5==4) && 7; /∗ b = 1 o CIERTO) ∗/

• La evaluación de expresiones lógicas es perezosa

int a = (3>2 | | b==4); /∗ b==4 NO se llega a evaluar ∗/

Jorge Peña Pastor Variables y Tipos 32/53

Operador TernarioSii (A) entonces vale B, si no vale C

A ? B : C

En operador ternario nos permite reemplazar asignacionescondicionales. Así pues, en lugar de usar una estructura decontrol:

I f (num%2) {str = "par" ;} else {str = "impar" ;}

Podemos emplear el operador ternario para obtener el mismoresultado:

str = (num%2 ? "par" : "impar" ) ;

Jorge Peña Pastor Variables y Tipos 33/53

Operador sizeof()

• Obtiene el número de bytes que ocupa (en memoria) unavariable o un tipo de datos

int a;i f (sizeof (a) == sizeof ( int ) ) /∗CIERTO∗/

• Devuelve un unsigned• Se obtiene durante la compilación• NO es función sino operador• Relaciones conocidas:

• 1 == sizeof(char) <= sizeof(short) <= sizeof(int) ==sizeof(unsigned) <= sizeof(long) <= sizeof(long long)

• sizeof(float) <= sizeof(double)

Jorge Peña Pastor Variables y Tipos 34/53

Operadores de Bit

& AND| OR^ XOR~ NOT

<< Desplazamiento a la izquierda>> Desplazamiento a la derecha

Jorge Peña Pastor Variables y Tipos 35/53

Ejemplos Operador de Bit

unsigned char a = 48;

unsigned char b = 19;

unsigned char x = a & b;

unsigned char y = a | b;

unsigned char z = a ^ b;

unsigned char w = ~a;

unsigned char t = a >> 2;

unsigned char s = b << 3;

0 0 1 1 0 0 0 0 a

0 0 0 1 0 0 1 1 b

0 0 0 1 0 0 0 0 x = 16

0 0 1 1 0 0 1 1 y = 51

0 0 1 0 0 0 1 1 z = 35

1 1 0 0 1 1 1 1 w = 207

0 0 0 0 1 1 0 0 t = 12

1 0 0 1 1 0 0 0 s = 152

Jorge Peña Pastor Variables y Tipos 36/53

Precedencia y Asociación

¿Cómo se evalúan expresiones con múltiples operadores?

int res = 3+4∗6 /∗ (27 o 42) ∗/

Jorge Peña Pastor Variables y Tipos 37/53

Precedencia

Los operadores de cada filatienen mayor precedencia quelos de su fila inferior.Los operadores de cada filatienen la misma precedencia

(, ), [, ], .,++,−− (post)sizeof, ++,−−, (pre)∗, /,%+,−<<,>>

<,<=, >,>=

==, !=&^|&&||=, +=, -=, *=, /=, %=?, :

Jorge Peña Pastor Variables y Tipos 38/53

Asociación

Todos los operadores de asignación, los operadores unarios yel operador ternario son asociativos de derecha a izquierda.El resto de izquierda a derecha.

3+4+5+6; /∗ ((3+4)+5)+6 ∗/a=b=c=d; /∗ a=(b=(c=d)) ∗/a=b<c; /∗ a=(b<c) ∗/

Jorge Peña Pastor Variables y Tipos 39/53

Ejercicios

Preguntas

Jorge Peña Pastor Variables y Tipos 40/53

Arrays/Vectores

Agrupaciones de información homogénea.Se almacenan en memoria contigua.

• Son variables independientes.• Utilizan un mismo identificador para acceder a su

contenido.A cada elemento se accede con el operador []Se indexan con enteros desde el 0

int vector [2 ] ; / / Vector de 2 elementosvector [0] = 1; / / Primer elementovector [1] = 2; / / Segundo elementovector [2] = 3; / / Error : No existen 3 elementos

Jorge Peña Pastor Variables y Tipos 41/53

Copia de Arrays

Para copiar arrays es necesario realizar la copia de cada unode sus valores.

int a[2] , b[2 ] ;a = b; / / Operacion no permitidaa[0] = b[0 ] ;a[1] = b[1 ] ;

Jorge Peña Pastor Variables y Tipos 42/53

Inicialización de Arrays

Manual:

int a[2 ] ;a[0] = 1; a[1] = 2;

int a[4] = {0 ,1 ,2 ,3};

Automática:

int a[ ] = {0 ,1}; /∗ a[2] = {0 ,1}

int a[4] = {1 ,2}; / / Las posiciones 2 y 3 vacias

Jorge Peña Pastor Variables y Tipos 43/53

Inicialización de Arrays

Manual:

int a[2 ] ;a[0] = 1; a[1] = 2;

int a[4] = {0 ,1 ,2 ,3};

Automática:

int a[ ] = {0 ,1}; /∗ a[2] = {0 ,1}

int a[4] = {1 ,2}; / / Las posiciones 2 y 3 vacias

Jorge Peña Pastor Variables y Tipos 43/53

Inicialización de Arrays

Manual:

int a[2 ] ;a[0] = 1; a[1] = 2;

int a[4] = {0 ,1 ,2 ,3};

Automática:

int a[ ] = {0 ,1}; /∗ a[2] = {0 ,1}

int a[4] = {1 ,2}; / / Las posiciones 2 y 3 vacias

Jorge Peña Pastor Variables y Tipos 43/53

Inicialización de Arrays

Manual:

int a[2 ] ;a[0] = 1; a[1] = 2;

int a[4] = {0 ,1 ,2 ,3};

Automática:

int a[ ] = {0 ,1}; /∗ a[2] = {0 ,1}

int a[4] = {1 ,2}; / / Las posiciones 2 y 3 vacias

Jorge Peña Pastor Variables y Tipos 43/53

Arrays de Varias Dimensiones

Se declaran concatenando varios []Se indexa en cada paso cada dimensiónSe inicializan de la misma forma que los arraysunidimensionales.

int a[2] [3 ] = { {1 ,2 ,3} , {4 ,5 ,6} } ;

Se declarar automáticamente el tamaño de la primeradimensión, pero no del resto.

int a[ ] [ 3 ] = { {1 ,2 ,3} , {4 ,5 ,6} } ;int b = a[0 ] [2 ] ; / / b contendra al valor 3int c = a[1 ] [1 ] ; / / c contendra al valor 5

Jorge Peña Pastor Variables y Tipos 44/53

Literales String

Tiras de Caracteres.Constantes entre comillas dobles.

"Esto es un string "

Sirven para inicializar arrays de tipo char• El último caracter siempre es el caracter nulo ’\0’• Necesitamos almacenar tantas variables de tipo char

como caracteres en nuestro literal + 1 del caracter nulo.

char nombre[4] = "Ana" ; /∗ nombre[4]={ ’A ’ , ’n ’ , ’a ’ , ’ \ 0 ’ } ; ∗/

Pero no para cambiar su valor una vez inicializados.

nombre = "Pedro" /∗ ERROR ∗/

Jorge Peña Pastor Variables y Tipos 45/53

Punteros

Tipo básico.Diferente a los que hemos visto hata ahora:

• El resto de los tipos almacenan datos relativos al cálculodel programa

• Los punteros almacenan direcciones de memoriaAsí pues, un puntero no almacene un dato, sino que apunta aél.

Puntero Dato

Jorge Peña Pastor Variables y Tipos 46/53

Punteros

Definición de variables de tipo puntero:• tipo *variable;

int ∗puntero_a_int , variable_int ;/∗ solo la primera variable es un puntero ∗/

Operador &:• Sirve para obtener la dirección de una variable.

puntero_a_int = &variable_int ;

Operador ∗:• Sirve para obtener el dato al que apunta una variable.

bool iguales = ∗puntero_a_int == variable_int ;

Jorge Peña Pastor Variables y Tipos 47/53

Tipos Definidos por elusuario

Jorge Peña Pastor Variables y Tipos 48/53

Tipo Enumerado

Es un tipo que puede contener un conjunto de valores definidopor el usuario.Se suele utilizar como una forma alternativa para definirconstantes.Existen dos formas de declararlos:

• especificando el nombre del tipo:

enum Mes {Enero, Febrero, . . , Diciembre } ;Mes mes_de_vacaciones;Mes mes_de_nacimiento;

• sin especificar el nombre del tipo:

enum {FEMENINO, MASCULINO} genero;

Jorge Peña Pastor Variables y Tipos 49/53

Representación Interna de losEnumerados

Internamente se representan como un entero:

enum Genero {FEMENINO=0, MASCULINO=1};

Se puede especificar el valor de cada elemento:

enum Mes {Enero=1, Febrero=2, . . , Diciembre=12};

Se puede especificar el valor del primer elemento, y el resto seasignan de forma consecutiva:

enum Mes {Enero=1, Febrero, . . , Diciembre } ;

Jorge Peña Pastor Variables y Tipos 50/53

Representación Interna de losEnumerados

Internamente se representan como un entero:

enum Genero {FEMENINO=0, MASCULINO=1};

Se puede especificar el valor de cada elemento:

enum Mes {Enero=1, Febrero=2, . . , Diciembre=12};

Se puede especificar el valor del primer elemento, y el resto seasignan de forma consecutiva:

enum Mes {Enero=1, Febrero, . . , Diciembre } ;

Jorge Peña Pastor Variables y Tipos 50/53

Representación Interna de losEnumerados

Internamente se representan como un entero:

enum Genero {FEMENINO=0, MASCULINO=1};

Se puede especificar el valor de cada elemento:

enum Mes {Enero=1, Febrero=2, . . , Diciembre=12};

Se puede especificar el valor del primer elemento, y el resto seasignan de forma consecutiva:

enum Mes {Enero=1, Febrero, . . , Diciembre } ;

Jorge Peña Pastor Variables y Tipos 50/53

Definición de Nuevos Tipos

Permite dar semántica a las variables de un problema.

typedef float Grados;Grados temperatura = 26.5;

Facilita la lectura del código.

typedef const unsigned int ConstanteEnteraSinSigno;ConstanteEnteraSinSigno MAX_FILAS = 5;

Puede facilitar la portabilidad entre distintas plataformas.

Jorge Peña Pastor Variables y Tipos 51/53

EstructurasAgrupaciones de información heterogénea almacenada enmemoria continua:

struct Fecha {int dia ;Mes mes;int ano;bool festivo ;} ;Fecha aniversario ;

Se pueden inicializar como los vectores:

Fecha hoy = {7 ,JUNIO, 2011, false } ;

Se accede a sus campos utilizando el operador . (punto):

aniversario .Mes = Febrero;bool esFestivo = hoy. festivo ;

Jorge Peña Pastor Variables y Tipos 52/53

EstructurasAgrupaciones de información heterogénea almacenada enmemoria continua:

struct Fecha {int dia ;Mes mes;int ano;bool festivo ;} ;Fecha aniversario ;

Se pueden inicializar como los vectores:

Fecha hoy = {7 ,JUNIO, 2011, false } ;

Se accede a sus campos utilizando el operador . (punto):

aniversario .Mes = Febrero;bool esFestivo = hoy. festivo ;

Jorge Peña Pastor Variables y Tipos 52/53

EstructurasAgrupaciones de información heterogénea almacenada enmemoria continua:

struct Fecha {int dia ;Mes mes;int ano;bool festivo ;} ;Fecha aniversario ;

Se pueden inicializar como los vectores:

Fecha hoy = {7 ,JUNIO, 2011, false } ;

Se accede a sus campos utilizando el operador . (punto):

aniversario .Mes = Febrero;bool esFestivo = hoy. festivo ;

Jorge Peña Pastor Variables y Tipos 52/53

UnionesSe declaran de forma similar a las estructuras.Sus campos comparten la misma memoria.Sólo permiten almacenar un valor (de cualquiera de sus tipos)a la vez.

struct Datos{int a, x [2 ] ;char c;} ;Datos d;

union Datos {int a, x [2 ] ;char c;} ;Datos d;

Jorge Peña Pastor Variables y Tipos 53/53

top related