El lenguaje de programación C ofrece una facilidad (typedef) para definir sinónimos para tipos de datos existentes. La sintaxis es la siguiente:
typedef tipo-existente nuevo-tipo ;
El nuevo sinónimo podrá emplearse en los mismos lugares en que puede emplearse el tipo original.
Esto resulta de mucha utilidad para los casos de tipos de datos con nombres muy extensos y difíciles de recordar o manipular. Por ejemplo, considere que se tiene un vector de tres dimensiones definido como:
float X1[N1][N2][N3];
Si se quiere definir una función que reciba como argumento uno de estos vectores, y que usará dentro de su implementación un vector similar para almacenamiento temporal, será necesario escribir:
void F(float X[N1][N2][N3]) {
float temp[N1][N2][N3];
...
}
Por otra parte, podría crearse un nuevo tipo mediante:
typedef float [N1][N2][N3] vector;
Entonces, la función anterior se simplificaría, quedando como:
void F(vector X) {
vector temp;
...
}
Un uso bastante popular para el typedef es para nombrar los tipos definidos como estructuras. Por ejemplo, podría definirse:
typedef struct {
char nombre[30];
char NumAlumno[8];
float Nota1;
float Nota2;
float Nota3;
float NotaFinal;
} Alumno;
Importante:
Dada la definición anterior, las siguientes declaraciones son válidas:
/* Declaracion de variables */
Alumno A4, A5, A6;
/* Funcion que retorna una estructura */
Alumno NuevoAlumno(char Nombre[]) { ...
/* Funcion que recibe como argumento una estructura */
void CalculaNota(Alumno A1) { ...
/* Declaracion e inicializacion de variable */
Alumno A = {"Elvira", "98231465", 6.0, 5.5, 5.0, 5.5};