elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Entendiendo una función
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Entendiendo una función  (Leído 1,425 veces)
codX

Desconectado Desconectado

Mensajes: 65


Es más complejo de lo que crees...


Ver Perfil
Entendiendo una función
« en: 25 Diciembre 2019, 16:53 pm »

Hola amigos del foro. Estoy estudiando el archiconocido libro EL Lenguaje de Programción C de Kernighan y Ritchie; en la sección de apuntadores a funciones aparece el siguiente código:

Código
  1. /* qsort: c la sific a v[left].. ,v[right] e n o rd e n a s c e n d e n te */
  2. void qsort(void *v[ ], int left, int right,
  3. int (*com p) (void *, void *))
  4. {
  5. int i, last;
  6. void sw ap(void *v[ ], int, int);
  7. if (left > = right)
  8. /* n o h a c e n ad a si el arre g lo co n tien e */
  9. re tu m ;
  10. /* m enos d e dos elem entos */
  11. sw ap(v, left, (left + right)/2);
  12. last = left;
  13. for (i = le ft+ 1 ; i < = right; i + + )
  14. if ((‘ com p) (v[i], v[left]) < 0)
  15. sw ap(v, + + la st, i);
  16. sw ap(v, left, last);
  17. qsort(v, left, la st—1, com p);
  18. qsort(v, last + 1, right, com p);
  19. }

No entiendo por qué dentro de dicha función declara otra función de la siguiente manera(segunda línea dentro de la funcion:

void sw ap(void *v[ ], int, int);

Gracias.


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.523



Ver Perfil
Re: Entendiendo una función
« Respuesta #1 en: 26 Diciembre 2019, 02:57 am »

Las funciones, al igual que las variables, deben ser conocidas por el compilador antes de ser usadas. Al igual que las variables, una función puede ser declarada en cualquier sitio: locales o globales. En este caso swap es local, es decir, sólo será vista dentro de qsort. Pero recordar que la definición de la función debe existir en otro lugar y el enlazador debe saber dónde encontrarla, es decir, lo único que cambia es que en vez de haber declarado la función global o por archivo de cabecera lo ha hecho local de otra función.


En línea

codX

Desconectado Desconectado

Mensajes: 65


Es más complejo de lo que crees...


Ver Perfil
Re: Entendiendo una función
« Respuesta #2 en: 26 Diciembre 2019, 16:53 pm »

Mafus, cómo estás. Me ha servido mucho la explicación, clara, concisa. Es la primera vez que lo veo. Gracias por tu tiempo. Buen 2020!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Entendiendo y traduciendo el pseudocódigo de la funcion para calcular hmac
Programación Visual Basic
Carloswaldo 3 4,192 Último mensaje 18 Julio 2009, 23:31 pm
por Dessa
[AYUDA] Entendiendo un MMORPG
Hacking
DolinaCH 9 15,538 Último mensaje 5 Abril 2013, 17:07 pm
por CloudswX
Entendiendo AVFucker [By 2Fac!]
Análisis y Diseño de Malware
2Fac3R 1 2,438 Último mensaje 14 Octubre 2011, 20:37 pm
por S1dD3xt35
Entendiendo la seguridad de Chrome
Seguridad
erawlam 0 831 Último mensaje 12 Marzo 2012, 15:50 pm
por erawlam
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines