Programación MT4: Cómo personalizar una función para devolver una matriz
Método 1: utilizar análisis de variables globales: las variables globales son un punto de conocimiento del lenguaje C. Aunque todos entendemos sus características, no se utilizan mucho en el proceso de enseñanza real. Dado que el alcance de las variables globales es desde el momento en que se define la variable hasta el final del programa, y para escribir funciones en lenguaje C con múltiples valores de retorno, podemos considerar definir los múltiples valores que se devolverán como variables globales. Cuando se llama a la función, la variable global cambia y aplicamos el valor de la variable global modificado a la función que llama. El valor de la variable global que se cambia después de llamar a la función es el valor de retorno de la función. A continuación se utiliza un ejemplo para demostrar la aplicación de este método. Ejemplo 1: escribe una función para encontrar los valores máximo y mínimo entre 3 números. Método: defina el valor máximo y el valor mínimo como dos variables globales max y min respectivamente, y asigne el valor máximo y el valor mínimo calculados a las variables globales max y min respectivamente en la función definida por el usuario. Una vez completada la llamada a la función, los valores máximo y mínimo de las variables globales almacenan los valores que la función debe devolver. El código de referencia del programa es el siguiente: #include "stdio.h" #include "conio.h" intmax,min;/*Defina dos variables globales para guardar los valores de retorno de la función*/voidmax_min(inta,intb,intc)/*Definición requisitos Función de valores máximos y mínimos*/{max=min=a;/*Inicializar valores máximos y mínimos*/if(maxif(maxif(min>b)min=b;if(min>c)min=c;} main() {intx,y,z;printf("Ingrese 3 números enteros:\n");scanf("%d,%d,%d",&x,&y,&z);max_min(x,y,z ); /*Llama a la función para encontrar los valores máximo y mínimo*/printf("El valor máximo entre los tres números es: %d; el valor mínimo es: %d",max,min);/*Muestra el máximo); y valores mínimos* /getch();} Los resultados de la depuración son los siguientes: Introduzca 3 números enteros: 5, -6, 2. El valor máximo entre los tres números es: 5 el valor mínimo es: -6. Aunque este método puede tener múltiples retornos de la función de valor, debido a que las variables globales no pueden garantizar la exactitud del valor (debido a que su alcance es global, su valor se puede modificar dentro del alcance del programa y será muy difícil de encontrar si ocurre un error). ), y las variables globales agregan acoplamiento de módulos entre programas, por lo que este método debe usarse con precaución. Método 2: Análisis del paso de punteros de matriz: durante el proceso de enseñanza, sabemos que los parámetros de la función del lenguaje C se pasan por valor y dirección. Al pasar por valor, la función que llama transfiere el valor real. El valor del parámetro se copia al parámetro formal, y el parámetro formal obtiene el valor pasado de la función que llama para ejecutar la función. el valor del parámetro de la función llamada no puede causar cambios en el valor del parámetro real. La dirección se pasa desde el parámetro real en el proceso, por lo que los cambios en el valor del parámetro formal en la función llamada conducirán directamente a cambios en el valor del parámetro real. Por lo tanto, podemos considerar definir múltiples valores de retorno como elementos de matriz en forma de matriz. Deje que la dirección de la matriz se use como parámetro formal de la función y los parámetros de la matriz se pasen por dirección. llamado, los cambios en los elementos del grupo de parámetros formales hacen que los parámetros reales cambien y luego obtenemos múltiples funciones de la función a partir de los elementos del grupo de parámetros reales modificados. El siguiente ejemplo demuestra la aplicación de este método. Escriba una función para encontrar los valores máximo y mínimo de una matriz de enteros unidimensionales y devuelva los valores máximos y mínimos a la función de llamada: pase el valor unidimensional como un puntero. matriz, luego intercambie el valor máximo de la matriz con el primer elemento de la matriz e intercambie el valor mínimo de la matriz con el último elemento. Después de llamar a la función, el primer elemento en el grupo de parámetros real es el valor máximo de. la matriz. El último elemento en el grupo de parámetros real es el valor mínimo de la matriz, realizando así la función de devolver los valores máximo y mínimo de la matriz.
El código de referencia del programa es el siguiente: #include"stdio.h"#include"conio.h"voidmax_min(int*ptr,intn)/*Defina la función para encontrar el valor máximo y mínimo de la matriz, pase el puntero de la matriz */{inti,j,k ;/*j guarda la posición del valor máximo, k guarda la posición del valor mínimo */int*temp;/*usado para intercambiar posiciones*/*temp=*ptr;for( i=0;i{if(*ptr*( ptr+i))/*Intercambiar el valor mínimo con el último elemento*/{j=i;*temp=*(ptr+n-1);*(ptr+ n-1)=*(ptr+j); *(ptr+j)=*temp;}}}/*Llamar a la función máxima y mínima*/main(){intA[6],i;for(i= 0;i<6;i++)scanf("%d ",&A[i]);max_min(A,6);printf("max=%d,min=%d\n\n",A[0] ,A[5]);getch();}Depuración El resultado es el siguiente: Ingrese 6 números enteros, separados por espacios: 58932-64max=32,min=-6 Nota: Este método es adecuado para situaciones en las que los datos Los tipos de valores de retorno múltiples son consistentes. Este método no es aplicable.