El lenguaje C no dispone de parámetros de entrada y salida. La forma de simular estos parámetros es la siguiente: el parámetro
se define como un puntero al tipo de la variable de entrada/salida y en la llamada a la función se pasa la dirección de la variable
que se desea modificar; internamente, mediante el puntero, se accede y modifica el dato externo.
Ejemplos de uso de un puntero como parámetro de entrada/salida se encuentran en el procedimiento extrae de
operadores de acceso a struct y union
y en la función inserta de typedef.
El procedimiento spmatriz que calcula la suma y el producto de los elementos almacenados en una matriz de enteros. Para obtener estos dos datos se pasan como parámetros dos punteros a enteros.
#include <stdio.h> void spmatriz(int m[][10], int n, int *s, int *p) { /* s y p son parámetros de entrada/salida */ int i, j; *s=0;*p=1; /* Se modifican r1 y r2 */ for(i=0;i<n;i++) for(j=0;j<10;j++){ *s += m[i][j]; /* Se modifican r1 */ *p *= m[i][j]; /* Se modifican r2 */ } } void usa(void){ int m1[3][10], m2[5][10]; int r1, r2; ... /* Se leen los elementos de las matrices m1 y m2 */ spmatriz(m1,3,&r1,&r2); /* Se invoca al procedimiento spMatriz pasándole la dirección de r1 y r2 */ printf("La suma de los elementos de m1 es %i y el producto es %i\n", r1, r2); spmatriz(m2,4,&r1,&r2); /* Se invoca al procedimiento spMatriz pasándole la dirección de r1 y r2 */ printf("La suma de los elementos de las 4 primeras filas de m2 es %i y el producto es %i\n", r1, r2); }