.
¿Siempre se debe declarar int a un puntero de una funcion/proceso?, me estoy leyendo un articulo al respecto que es de C++, pero quisiera saber si en ANSI C es lo mismo o si los punteros a funciones ANSI C son de otra forma.
[congetura]
* Creo y supongo que se declara con el tipo que devuelve la funcion, similar a la declaracion de un prototipo pero difiriendo de esta.
[/congetura]
Dulces Lunas!¡.
Cita de: BlackZeroX▓▓▒▒░░ en 14 Enero 2011, 02:12 AM
[congetura]
* Creo y supongo que se declara con el tipo que devuelve la funcion, similar a la declaracion de un prototipo pero difiriendo de esta.
[/congetura]
Así es.
Mira un ejemplo:
#include <stdio.h>
void escribir(signed int);
int main(void)
{
void (*puntero)(int); /* puntero es un puntero a una funcion */
puntero = escribir; /* puntero = direccion del comienzo de la funcion */
(*puntero)(20);
return 0;
}
void escribir(signed int numero)
{
if(numero > 1)
escribir(numero - 1);
printf("%d\n", numero);
}
Utilizamos el tipo de dato void.
.
Gracias por corrovorarmelo, lo que andube leyendo siempre ponian int cuando veia que las funciones era char* o char** o void, se que no esta mal pero se que es una mala practica a largo plazo... y era por esto que deseaba saber realmente esto.
Aquí dejare una de mis practicas.
#include<stdio.h>
#include<stdlib.h>
char* strcpy(char* str_dest,char* str_src)
/**
Copia [*str_src] a [*str_dest].
Retorna el puntero a [str_dest]
**/
{
char *copyreturn = str_dest;
while(*(str_dest++)=*(str_src++));
return copyreturn;
}
char* clone_string(char *msg,unsigned int lenmsg, char *(*Pcopy)(char*,char*))
/*
Clonea una longitud de *msg y retorna el puntero hacia la misma.
*msg Cadena entrante a copiarse.
lenmsg Longitud de *msg.
*Pcopy Puntero a el proceso que copiara a msg a un nuevo buffer.
*/
{
char *cadena = (char*)malloc(sizeof(char)*(++lenmsg));
return Pcopy(cadena,msg);
}
int main() {
char *(*pf1)(char*,unsigned int,char*(*)(char*,char*)) = clone_string;
char *res = pf1((char*)"Hola Mundo",10,strcpy);
printf ("%s",res);
free(res);
getchar();
return 0;
}
Temibles Lunas!¡.
.