C Pasar direcciones y punteros a funciones

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 *n1e *n2intercambiado. 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 *pinterior main()también es 11.

Articulos interesantes...