En este tutorial, aprenderá a pasar direcciones y punteros como argumentos a funciones con la ayuda de ejemplos.
En la programación C, también es posible pasar direcciones como argumentos a funciones.
Para aceptar estas direcciones en la definición de la función, podemos usar punteros. Es porque los punteros se utilizan para almacenar direcciones. Tomemos un ejemplo:
Ejemplo: pasar direcciones a funciones
#include void swap(int *n1, int *n2); int main() ( int num1 = 5, num2 = 10; // address of num1 and num2 is passed swap( &num1, &num2); printf("num1 = %d", num1); printf("num2 = %d", num2); return 0; ) void swap(int* n1, int* n2) ( int temp; temp = *n1; *n1 = *n2; *n2 = temp; )
Cuando ejecute el programa, la salida será:
num1 = 10 num2 = 5
La dirección de num1 y num2 se pasa a la swap()
función usando swap(&num1, &num2);
.
Los punteros n1 y n2 aceptan estos argumentos en la definición de la función.
void swap(int* n1, int* n2) (… )
Cuando * n1 y * n2 se cambian dentro de la swap()
función, num1 y num2 dentro de la función main () también se cambian.
Dentro de la swap()
función *n1
e *n2
intercambiado. Por lo tanto, num1 y num2 también se intercambian.
Tenga en cuenta que swap()
no devuelve nada; su tipo de retorno es void
.
Ejemplo 2: pasar punteros a funciones
#include void addOne(int* ptr) ( (*ptr)++; // adding 1 to *ptr ) int main() ( int* p, i = 10; p = &i; addOne(p); printf("%d", *p); // 11 return 0; )
Aquí, el valor almacenado en p *p
, es 10 inicialmente.
Luego pasamos el puntero p a la addOne()
función. El puntero ptr obtiene esta dirección en la addOne()
función.
Dentro de la función, aumentamos el valor almacenado en ptr en 1 usando (*ptr)++;
. Dado que los punteros ptr y p tienen la misma dirección, el *p
interior main()
también es 11.