Al margen, una vez que entienda cómo funciona la sintáxis de declaración de C y C++ podrá crear elementos más complicados. Por ejemplo:
//: V1C03:ComplicatedDefinitions.cpp /* 1. */ void * (*(*fp1)(int))[10]; /* 2. */ float (*(*fp2)(int,int,float))(int); /* 3. */ typedef double (*(*(*fp3)())[10])(); fp3 a; /* 4. */ int (*(*f4())[10])(); int main() {}
Estudie cada uno y use la regla derecha-izquierda para
entenderlos. El número 1 dice «fp1 es
un puntero a una función que toma un entero como argumento y
retorna un puntero a un array de 10 punteros
void».
El 2 dice «fp2 es un puntero a función
que toma tres argumentos (int, int y
float) de retorna un puntero a una función que
toma un entero como argumento y retorna un
float»
Si necesita crear muchas definiciones complicadas, debería usar
typedef. El número 3 muestra cómo un typedef
ahorra tener que escribir una descripción complicada cada
vez. Dice «Un fp3 es un puntero a una función
que no tiene argumentos y que retorna un puntero a un array de
10 punteros a funciones que no tienen argumentos y retornan
doubles». Después dice
«a es una variable de ese tipo
fp3». typedef es útil para
construir descripciones complicadas a partir de otras simples.
El 4 es una declaración de función en lugar de una definición de
variable. Dice «f4 es una función que
retorna un puntero a un array de 10 punteros a funciones que
retornan enteros».
Es poco habitual necesitar declaraciones y definiciones tan complicadas como éstas. Sin embargo, si se propone entenderlas, no le desconcertarán otras algo menos complicadas pero que si encontrará en la vida real.