C entrada y salida de parámetros de una función.

Para un proyecto de clase que estoy escribiendo, la guía de estilo para funciones de mi profesor dice que “los parámetros de entrada deben aparecer antes que los parámetros de salida” No estoy muy seguro de lo que quieren decir con esto?

Si tengo una función

 void foo(int a, int b, int* c) { *c = a+b; } 

En el caso anterior, a y b son entradas mientras que c es una salida.

Por lo general, usa “salidas” de esta manera si está devolviendo una matriz.

C en realidad no tiene parámetros de “entrada” y “salida”, al menos no directamente. (Algunos lenguajes lo hacen). Todos los argumentos se pasan por valor, lo que significa que la función obtiene el valor del argumento, pero cualquier modificación al parámetro es invisible para el llamante.

(Terminología: un * parámetro es un objeto con nombre en el cuerpo de una función, definido entre paréntesis; un argumento es una expresión en una llamada de función. Cada argumento se evalúa y el valor resultante se asigna al parámetro correspondiente).

Sin embargo, puede simular los parámetros de “salida” utilizando punteros. Por ejemplo:

 void foo(int in, int *out); 

El puntero se pasa por valor, pero la función puede asignar un valor a través del puntero a *out , que será visible para la persona que llama. ( out también se puede usar como un parámetro de entrada, que es común para los tipos grandes donde pasar un puntero es más eficiente, o como un parámetro de entrada / salida).

Por lo tanto, “los parámetros de entrada deben aparecer antes de los parámetros de salida” probablemente significa que los parámetros que no son punteros deben aparecer antes de los parámetros de puntero utilizados para devolver valores de manera indirecta.

Esto es generalmente para funciones de void .

 void some_function (int input_1, int input_2, char* output) { /* Do things with input_1 and input_2. */ /* Modify "output". */ } 

El código que acabo de dar es muy vago, y los parámetros de entrada / salida en una función de vacío se pueden aplicar de muchas maneras.