Ir al contenido

Typedef

De Wikipedia, la enciclopedia libre
Esta es una versión antigua de esta página, editada a las 22:42 20 jun 2014 por 186.138.77.87 (discusión). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.

typedef es una palabra reservada en el lenguaje de programación C y C++. Su función es asignar un nombre alternativo a tipos existentes, a menudo cuando su declaración normal es aparatosa, potencialmente confusa o probablemente variable de una implementación a otra.

Ejemplos de uso

Ejemplo básico de typedef

Considere este código:

#include <stdio.h>

int main() 
{
    int notas;
    notas=100;
    return 0;
}

Ahora considere esto :

#include <stdio.h>

int main()
{
    typedef int nota_alumno_t;
    nota_alumno_t notas;
    notas=100;
    return -1;
}

Ambas secciones de código hacen lo mismo: crean un tipo int (notas) y le dan un valor de 100. El método para hacer esto en la segunda sección hace que sea más legible porque la declaración typedef hace que nota_alumno_t signifique lo mismo que int. En este ejemplo, la variable notas guarda las "notas" de un estudiante, así que definir notas como una variable de tipo nota_alumno_t le da al nombre de esa variable un contexto.

Ejemplo con struct

Un ejemplo más:

struct var
{
   int data1;
   int data2;
   char data3;
};

Aquí, un tipo var ha sido definido por el usuario. Así que para crea una variable de tipo var, usamos este código:

struct var a;

Agreguemos esta línea:

typedef struct var nuevotipo;

Ahora, para crear una variable de tipo var, alcanza con:

nuevotipo a;

Esto es más legible porque no se requiere la palabra reservada struct antes de cada variable de tipo var.

Uso en C++

std::vector<std::pair<std::string, int> > valores;
for (std::vector<std::pair<std::string, int> >::const_iterator i = valores.begin(); i != valores.end(); ++i)
{
   std::pair<std::string, int> const & t = *i;
   // hacer alguna tarea
}

y

typedef std::pair<std::string, int> valor_t;
typedef std::vector<valor_t> valores_t;

valores_t valores;
for (valores_t::const_iterator i = valores.begin(); i != valores.end(); ++i)
{
   valor_t const & t = *i;
   // hacer alguna tarea
}

Enlaces externos