Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

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

  1. Identificadores y palabras clave de C#
  2. Operadores C# Bitwise y Bit Shift
  3. Clase y objeto de C#
  4. Clase y método abstractos de C#
  5. C# Clase parcial y método parcial
  6. Clase y método sellados de C#
  7. Pasar arreglos a una función en C
  8. Punteros C
  9. Relación entre matrices y punteros
  10. Estructuras C y punteros
  11. C - Constantes y Literales