c transferencia de parámetros de función de lenguaje

Procedimiento 1: paso de valor

#include<iostream>
#include<cstdio>

using namespace std;

void Exchg1(int x, int y)
{
	int tmp;
	tmp = x;
	x = y;
	y = tmp;
	printf("x = %d, y = %d\n",x, y);
}

int main()
{
	int a = 4, b = 6;
	Exchg1(a, b);
	printf("a = %d, b = %d\n", a, b);
	return 0;
} 

Se intercambió en Exchg1, pero no funcionó en la función principal.

Motivo: cuando se llama a la función, asigna implícitamente los valores de los parámetros reales a y b a x e y, y luego no se realizan más operaciones en a y b en el cuerpo de la función escrita. El intercambio es solo x, y variables. No a, b. Por supuesto, los valores de ayb no han cambiado. La función simplemente pasa los valores de a y b a x e y a través del valor pagado. La operación en la función es solo que los valores de x e y no son los valores de a y b. Esto se llama paso de valor.

Procedimiento 2: transferencia de dirección

#include<iostream>
#include<cstdio>

using namespace std;

void Exchg1(int *x, int *y)
{
	int tmp;
	tmp = *x;
	*x = *y;
	*y = tmp;
	printf("x = %d, y = %d\n",*x, *y);
}

int main()
{
	int a = 4, b = 6;
	Exchg1(&a, &b);
	printf("a = %d, b = %d\n", a, b);
	return 0;
} 

Para lograr el intercambio digital.

La operación de copia implícita de la función es dar las direcciones de a y b a x e y. Se puede ver que los valores de los punteros x e y son los valores de dirección de las variables ayb, respectivamente. A continuación, la operación en * x, * y es, por supuesto, la operación en las variables ayb.

Procedimiento 3: Pase por referencia

#include<iostream>
#include<cstdio>

using namespace std;

void Exchg1(int &x, int &y)
{
	int tmp;
	tmp = x;
	x = y;
	y = tmp;
	printf("x = %d, y = %d\n",x, y);
}

int main()
{
	int a = 4, b = 6;
	Exchg1(a, b);
	printf("a = %d, b = %d\n", a, b);
	return 0;
} 

Para lograr el intercambio digital.

x e y se refieren a las variables ayb respectivamente. De esta manera, la operación real de la función son los parámetros reales a, b en sí. En otras palabras, la función se puede modificar directamente al valor de a, b.

La diferencia entre el paso de valor y el paso de referencia:

1: diferente en el formato de definición de funciones.

2: el mismo formato cuando se llama.

3: La función es diferente. (Una operación no es la variable en sí, una es en sí misma)

158 artículos originales publicados · Me gusta 10 · Visitantes más de 20,000

Supongo que te gusta

Origin blog.csdn.net/ab1605014317/article/details/105590456
Recomendado
Clasificación