Direcciones y punteros de C Pass
Direcciones y punteros de C Pass
En este tutorial, aprenderá a pasar direcciones y punteros como argumentos a funciones con la ayuda de ejemplos.
En 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 usan para almacenar direcciones. Tomemos un ejemplo:
Ejemplo:Pasar direcciones a funciones
#include <stdio.h>
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\n", 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 pasan al swap()
función usando swap(&num1, &num2);
.
Punteros n1 y n2 acepte estos argumentos en la definición de la función.
void swap(int* n1, int* n2) {
... ..
}
Cuando *n1 y *n2 se modifican dentro del swap()
función, num1 y num2 dentro de principal() la función también se cambia.
Dentro del swap()
función, *n1
y *n2
intercambiado Por lo tanto, num1 y num2 también se intercambian.
Observe que swap()
no está devolviendo nada; su tipo de retorno es void
.
Ejemplo 2:pasar punteros a funciones
#include <stdio.h>
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 al addOne()
función. El ptr el puntero obtiene esta dirección en el addOne()
función.
Dentro de la función, aumentamos el valor almacenado en ptr por 1 usando (*ptr)++;
. Desde ptr y p ambos punteros tienen la misma dirección, *p
dentro de main()
también es 11.
Lenguaje C
- Identificadores y palabras clave de C#
- Operadores C# Bitwise y Bit Shift
- Clase y objeto de C#
- Clase y método abstractos de C#
- C# Clase parcial y método parcial
- Clase y método sellados de C#
- Pasar arreglos a una función en C
- Punteros C
- Relación entre matrices y punteros
- Estructuras C y punteros
- C - Constantes y Literales