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

 

 


Tema destacado: Curso de javascript por TickTack


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

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Consulta argumentos
« en: 20 Diciembre 2013, 21:12 pm »

hay ventajas en hacer este tipo de declaraciones ?

Código:
static int
compare (const void *a, const void *b)
{
  return strcmp (*(char **) a, *(char **) b);
}





En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Consulta argumentos
« Respuesta #1 en: 21 Diciembre 2013, 00:44 am »

hay ventajas en hacer este tipo de declaraciones?
Primero tienes que indicar en relación a que.

Para dar mas contexto una función de ese tipo se utiliza junto con qsort (parte de la biblioteca estándar de C) para ordenar un array de punteros a carácter:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. static int cmp(void const *p, void const *q);
  6.  
  7. int main(void)
  8. {
  9.   char *pal[] = {
  10.      "xyz",
  11.      "paco",
  12.      "luis",
  13.      "hugo",
  14.      "abc",
  15.   };
  16.   size_t num_pals = sizeof pal / sizeof pal[0];
  17.   size_t i;
  18.  
  19.   qsort(pal, num_pals, sizeof pal[0], cmp);
  20.   for (i = 0; i < num_pals; i++)
  21.      printf("%lu: %s\n", (unsigned long) i, pal[i]);
  22.  
  23.   return EXIT_SUCCESS;
  24. }
  25.  
  26. static int cmp(void const *p, void const *q)
  27. {
  28.   return strcmp(*(char **) p, *(char **) q);
  29. }

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
elProfeta1979

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Consulta argumentos
« Respuesta #2 en: 21 Diciembre 2013, 18:36 pm »

por eso mismo, mi pregunta es: ¿sí es una función donde siempre se le pasan cadenas de caracteres para que poner punteros genéricos y luego hacer el cast?

preguntaba si hay alguna ventaja o si, en este caso es lo mismo hacer la función así:

static int
compare (const char *a, const char *b);

con punteros a char

saludos
En línea

elProfeta1979

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Consulta argumentos
« Respuesta #3 en: 21 Diciembre 2013, 18:39 pm »

------------
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Consulta argumentos
« Respuesta #4 en: 22 Diciembre 2013, 02:15 am »

mi pregunta es: ¿sí es una función donde siempre se le pasan cadenas de caracteres para que poner punteros genéricos
Porque la función sera llamada por qsort, su prototipo es:
Código
  1. qsort(void *elem, size_t num_elem, size_t elem_size, int (*cmp)(void const *pa, void const *pb))
Con el se indica que el cuarto argumento sera un puntero a función cuyo tipo de retorno es int y sus dos argumentos de tipo "void *", esto para que la función sea genérica ya que no puede saber de antemano el tipo del array a ordenar.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
elProfeta1979

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Consulta argumentos
« Respuesta #5 en: 22 Diciembre 2013, 02:24 am »

gracias

:o
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Argumentos en olly
Ingeniería Inversa
Darklight3 3 2,817 Último mensaje 5 Agosto 2009, 23:02 pm
por KJD
argumentos del main?
Programación C/C++
<<<-Basura->>> 4 5,742 Último mensaje 12 Octubre 2011, 08:43 am
por <<<-Basura->>>
Argumentos Variables
Programación C/C++
david_BS 0 1,500 Último mensaje 30 Abril 2012, 19:44 pm
por david_BS
Argumentos del main
Programación C/C++
mapers 5 3,183 Último mensaje 5 Junio 2012, 22:01 pm
por Ferno
consulta sobre pasar varios argumentos a un ejecutable de un textbox
.NET (C#, VB.NET, ASP)
ahaugas 3 2,819 Último mensaje 12 Enero 2013, 13:56 pm
por ahaugas
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines