Extraña (para mí) declaración de función

¿Qué significa esa declaración en C?

void help_me (char *, char *);

Soy novato, pero sé de punteros. ¿Parece que esto es algo diferente?

preguntado el 29 de septiembre de 11 a las 13:09

Es una declaración de una función que lleva dos punteros a char. Si comprende los punteros, creo que solo necesita aprender sobre las funciones. -

3 Respuestas

Esta declaración dice que help_me es una función que toma dos punteros para char (por ejemplo, dos cadenas).

Para una declaración de prototipo de función, los nombres de las variables son opcionales: void help_me (char *, char *); y void help_me (char * foo, char * bar); son equivalentes

Respondido el 29 de Septiembre de 11 a las 17:09

Y el vacío significa que no devuelve nada. - John Kurlak

Gracias, pero ¿cuál es la diferencia entre help_me (char *, char *); y help_me (char * x, char * y); ? - patriotero

@jingo Actualicé mi respuesta, también vea las otras respuestas a su pregunta. - sverre

Se trata de un prototipo para una función. No da nombres a los argumentos porque no es estrictamente necesario en un prototipo.

Aquí está declarando que existe una función, help_me que toma 2 argumentos ambos de tipo char * y no devuelve nada.

Respondido el 29 de Septiembre de 11 a las 17:09

No solo es innecesario incluir nombres de argumentos en un prototipo; también es dañino. Se romperá cuando los nombres entren en conflicto con el nombre de una macro de preprocesador. Los encabezados del sistema pueden evitar esto utilizando el espacio de nombres reservado (por ejemplo, el prefijo de subrayado doble), pero los encabezados de usuario tendrían que documentar su propio espacio de nombres reservado. Personalmente, creo que tiene mucho más sentido omitir los nombres de los argumentos y usar un comentario si desea documentar el propósito de los argumentos en el encabezado ... - R .. GitHub DEJA DE AYUDAR A ICE

Verdadero. Sin embargo, dar nombre a los argumentos facilita la documentación y, en ausencia de documentación, da una pista sobre la intención de cada argumento. - espacio libre

Lo que estaba diciendo es que poner un comentario en la línea inmediatamente antes del prototipo es tan útil como la documentación y evita el problema de la contaminación del espacio de nombres. - R .. GitHub DEJA DE AYUDAR A ICE

En el comentario, ¿cómo se refiere a cada argumento? Referirse a ellos por su posición parece propenso a errores y bastante hostil. Si bien la documentación que hace uso de argumentos nombrados cuesta diez centavos la docena, todavía he encontrado alguna en la que este no es el caso. ¿Quizás pueda vincularme a un ejemplo en el que puedo continuar con mi educación? - espacio libre

Algo como /* strcpy(dest, src) */ char *strcpy(char *restrict, const char *restrict); - R .. GitHub DEJA DE AYUDAR A ICE

Es un prototipo, y en un prototipo solo se necesita el tipo de argumentos, es decir, no necesitas decir algo como:

void help_me (char* a_char, char* another_char);

Respondido el 29 de Septiembre de 11 a las 17:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.