Aprendizaje de lenguaje C - aplicación de punteros 2

Por qué usar el puntero 2: la
variable del puntero se usa como un parámetro de función, y la dirección de una variable se puede transferir a otra función;
por ejemplo, se puede implementar la siguiente función: los dos enteros de entrada se emiten de acuerdo con el tamaño (procesados por el método de la función)

#include <stdio.h>

int  main()
{
    
    
	void swap(int *p1, int *p2);
	int a, b;
	int *n1, *n2; 
	scanf_s("%d,%d", &a, &b);
	n1 = &a;
	n2 = &b;
	if (a < b) swap(&a, &b);
	printf("max =%d,min =%d\n,", a, b);
	return 0;
}
void swap(int  *p1,int *p2)
{
    
    
	int temp;
	temp = *p1;
	*p1 = *p2;
	*p2 = temp;
}

inserte la descripción de la imagen aquí
El resultado es intercambiar el valor de ab, pero los valores de p1 y p2 permanecen sin cambios;

Pero si cambia la función de intercambio a

#include <stdio.h>

int  main()
{
    
    
	void swap(int p1, int p2);
	int a, b;
	int *n1, *n2; 
	scanf_s("%d,%d", &a, &b);
	n1 = &a;
	n2 = &b;
	if (a < b) swap(a, b);
	printf("max =%d,min =%d\n,", a, b);
	return 0;
}
void swap(int  p1,int p2)
{
    
    
	int temp;
	temp = p1;
	p1 = p2;
	p2 = temp;
}

inserte la descripción de la imagen aquí
El resultado es incorrecto. La razón es: después de ejecutar la función de intercambio, los valores de x e y se intercambian, pero los valores de a y b no se ven afectados. Al final de la función, las variables x e y se liberan, y a, b en la función principal, no hay intercambio, y el cambio del valor del parámetro formal no puede hacer que el valor del parámetro real cambie con él.
Es decir, para cambiar el valor de algunas variables en la función principal, se debe utilizar como parámetro de la función la variable puntero, al ejecutar la función cambiará el valor al que apunta la variable puntero, por lo que se utiliza el puntero;

Supongo que te gusta

Origin blog.csdn.net/jinanhezhuang/article/details/119007683
Recomendado
Clasificación