C/Visual C - PROBLEMILLAS CON LOS PUNTEROS EN C

 
Vista:

PROBLEMILLAS CON LOS PUNTEROS EN C

Publicado por Ana (1 intervención) el 14/12/2005 20:43:06
me gustaria que alguien me ayudara con una serie de funciones con punteros es que no se lo que significan para que alguien me lo explicase.
estas son las llamadas de las funciones:
int *p (int, float);
int (*p) (int, float);
int *(*p) (int, float);
int *p (int*, float);
int *p (int(*) (int,int), float);
int (*p)( int(*) (int*,int), float);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:PROBLEMILLAS CON LOS PUNTEROS EN C

Publicado por Yasmany Alfonso (9 intervenciones) el 14/12/2005 21:45:36
int *p (int, float);
Quiere decir que la función p retorna un puntero a un enetero, y obviamente recibe un entero y un real de simple precisión,(int, float).

int (*p) (int, float);
Quiere decir que p es un puntero a una función que retorna un enetero, que recibe un int y un float como argumentos.

int *(*p) (int, float);
Quiere decir que p es un puntero a una función que retorna un puntero enetero, que recibe un int y un float como argumentos.

int *p (int*, float);
Quiere decir que p es una función que retorna un puntero a un enetero, que recibe un punero a un int, y un float como argumentos.

int *p (int(*) (int,int), float);
Quiere decir que la función p retorna un puntero a un entero, y que recibe como primer parámetro un puntero a una función que retorna un entero, cuya función recibe dos enteros como argumentos. El otro argumento que recibe p es obviamente un float.

int (*p)( int(*) (int*,int), float);
Quiere decir que p es un puntero a una función, que recibe como primer argumento un puntero a una función, cuya función recibe a su vez un puntero a un entero, y un entero.El segundo argumento, obviamente es un float.

Punteros a funciones:
Se declaran encerrando entre (), el asterisco y un identificador, esto es importante, porque no es lo mismo:
void* p() que void(*p).
La primera es una función que retorna un puntero void, y la segunda es un puntero a una función void,(conocida también como procedimiento).

Tabién:
typedef void(*p)(int ) ;
...
void prueba(int );
......
p a=prueba;

Declaras p como un tipo nuevo, que sea un puntero a una función que reciba un entero. Luego declaras una función void que reciba un int, se la asignas a la variable "a", que tiene como tipo p; y luego puedes utilizar "a", para llamar a la función prueba o a cualquier función void, que reciba un entero como argumento. OJO!!!!!!!! Los tipos del valor de retorno y de los argumentos debe coincidir perfectamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar