Ir al contenido principal

C: Definición de nuevos tipos de datos...

El lenguaje C nos permite definir nuevos nombres para tipos de datos ya existentes mediante la palabra reservada typedef.


Veamos cómo hacerlo...

Nuevos nombres para tipos de datos existentes:


Para definir un nuevo nombre para los tipos de datos ya existentes usaremos la siguiente sintaxis:


Como vemos, usamos la palabra typedef seguida del tipo de dato correspondiente y el nuevo nombre que le daremos.

Por lo que si quisiéramos que el tipo int sea un nuevo tipo llamado "Entero" haríamos lo siguiente:


Y como vemos luego al declarar una variable de ese tipo usaremos directamente el nuevo nombre del tipo de dato.


NOTA: Recomendamos colocar la primera letra del tipo de dato (o todo el nombre) en mayúsculas para poder distinguir los tipos de datos personalizados de las variables. O también anteponer la palabra "Tipo" al nombre, en el ejemplo anterior podríamos usar TipoEntero para facilitar la lectura del código. 
  

Nuevos nombres para tipos struct:


Uno de los casos en que suele usarse la definición de nuevos tipos es con las estructuras, de manera que le damos un nuevo nombre al tipo struct y luego nos ahorramos el colocar la palabra struct cada vez que declaramos una variable de tipo estructurado.

Esto podemos hacerlo de la siguiente manera:



Veamos un ejemplo:


Con lo que después podemos declarar variables usando directamente nuestro nuevo "TipoPersona" (lo mismo para punteros a estas estructuras):


Otra forma más compacta de definir un nuevo tipo a partir de una estructura es la siguiente:


Donde directamente agregamos la palabra typedef a la definición de la estructura y al final colocamos el nombre del nuevo tipo de dato.

En nuestro ejemplo del TipoPersona tendríamos algo como esto:


Y luego declararíamos nuestra variable directamente con ese tipo de la misma manera que hicimos antes:




Llegamos al final de esta entrada, ya nos veremos cuando sigamos avanzando en el lenguaje C. Hasta la próxima.


Comentarios

  1. gracias por esta pagina, la verdad es que me encanta por que como hay cosas de varios lenguajes entrelazados (que coinciden bastante con los que me interesan) nunca te aburres . Saludos!!!

    ResponderEliminar
  2. que bueno que te guste y me alegra que pueda servirte de algo. Saludos!!

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

C: Conversiones de tipo (casting) en C...

El casting o simplemente cast  nos permite hacer una conversión explícita de un tipo de dato a otro, a criterio del programador siempre y cuando estos tipos sean compatibles. Este cast se realiza a través de un operador de conversión de tipos (type casting operator) y es un recurso a tener en cuenta ya que hay situaciones en que nos puede resultar de gran utilidad. Hacer uso de un cast es tan sencillo como poner (tipo de dato)  delante de la expresión o variable a convertir. Veamos un ejemplo: Declaramos una variable de tipo int con un identificador tan creativo como "a" y le realizamos diferentes cast a a para mostrarlo como si fuera un float, un double y un char en un printf. Lo que obtendríamos en pantalla sería lo siguiente: Donde tenemos el valor de nuestro a, a convertido en float y double (mostrándolo con 3 cifras decimales) y a convertido en char. Si vemos este último caso, al hacer la conversión de "a" a char toma a como el código ascii de

C: Ejemplos: Congruencia de Zeller (nivel básico) ...

La Congruencia de Zeller es un algoritmo que se atribuye al matemático alemán Julius Christian Johannes Zeller que vivió en el siglo XIX. Este algoritmo nos permite determinar el día de la semana que le corresponde a una fecha determinada del calendario Gregoriano. La fórmula que nosotros usaremos (con algunas modificaciones respecto de la original para poder usarla en  informática) es la siguiente: Donde h es el día de la semana (entre 0 y 6), J es año/100 (la centuria) y K es año mod 100 (el año de la centuria). Y hay que tener en cuenta que los meses de enero y febrero cuentan como el mes 13 y 14 del año anterior. Ahora que tenemos la fórmula, programemos el algoritmo en C mediante el uso de una función: Analicemos el código paso a paso: Tenemos en cuenta el caso de enero y febrero: Dijimos que estos meses corresponden a los meses 13 y 14 del año anterior por lo que los asignamos como corresponde (mes + 12 , que dará 13 para enero y 14 para febrero) y le rest

Algoritmos: Resolución de problemas y refinamientos en pseudocódigo...

En otras entradas, vimos las partes que debe tener nuestro algoritmo en pseudocódigo y las estructuras que utilizaremos para resolverlo. Ahora llega el turno de implementar todo en conjunto para dar origen a nuestra creación. Pero ¿cómo resolvemos un problema así? Para hacerlo, utilizaremos lo que llamamos refinamientos sucesivos. Este concepto consiste en dividir el problema en subproblemas más pequeños y a estos, a su vez, en otros más pequeños; y así sucesivamente hasta que la solución de los últimos sea trivial, sencillo de resolver. Luego usaremos todas las soluciones obtenidas para armar la solución de nuestro problema mayor. Este principio, tiene base en parte de la técnica divide and conquer (dependiendo de la traducción: "divide y vencerás") que es una de las muchas técnicas de resolución de algoritmos existentes. Como vemos, al dividir el problema en otros más pequeños y más fáciles de resolver, podemos pasar de un problema complicado a uno cuya solución es much