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

Programación en C: Pasar direcciones y punteros a funciones – Guía práctica

Programación en C: Pasar direcciones y punteros a funciones

Domine cómo pasar direcciones de memoria y punteros a funciones en C, con ejemplos claros y explicaciones expertas.

En C, pasar una dirección en lugar de un valor permite a una función manipular directamente la variable original. Esta técnica, llamada paso por referencia, es esencial para código eficiente y para modificar datos entre ámbitos.

Ejemplo 1: Intercambiar dos enteros por referencia

#include <stdio.h>
void swap(int *n1, int *n2);
int main(void) {
    int num1 = 5, num2 = 10;
    /* Pasar las direcciones de num1 y num2 */
    swap(&num1, &num2);
    printf("num1 = %d\n", num1);
    printf("num2 = %d", num2);
    return 0;
}
void swap(int *n1, int *n2) {
    int temp = *n1;
    *n1 = *n2;
    *n2 = temp;
}

Ejecutar este programa produce:

num1 = 10
num2 = 5

La función swap() recibe punteros n1 y n2 que apuntan a las variables originales num1 y num2. Al desreferenciar estos punteros (*n1 y *n2), la función intercambia los valores reales almacenados en memoria, por eso main() ve los números actualizados. Observe que swap() devuelve void porque modifica sus argumentos directamente.

Ejemplo 2: Incrementar un valor mediante un puntero

#include <stdio.h>
void addOne(int *ptr) {
    (*ptr)++; /* Incrementar el valor en la dirección dada */
}
int main(void) {
    int i = 10;
    int *p = &i;
    addOne(p);
    printf("%d", *p); /* Imprime 11 */
    return 0;
}

Aquí, p contiene la dirección de i. La función addOne() recibe esa misma dirección, la desreferencia e incrementa el valor subyacente. Después de la llamada, *p (y por consiguiente i) refleja el nuevo valor de 11.

Estos ejemplos ilustran el poder del paso por puntero: las funciones pueden alterar variables definidas fuera de su ámbito, permitiendo manipulación eficiente de datos sin copias innecesarias.

Lenguaje C

  1. Entendiendo palabras clave e identificadores en C#: Reglas, listas y mejores prácticas
  2. Dominando operadores bit a bit y de desplazamiento en C#: Guía completa
  3. Clases y objetos en C#: Fundamentos para POO robusta
  4. Dominando clases y métodos abstractos en C#: Guía práctica
  5. Entendiendo clases y métodos parciales en C#
  6. Dominando clases y métodos sealed en C#: Cuándo usarlos, ejemplos claros y mejora de seguridad y rendimiento
  7. Cómo pasar arrays 1D y 2D a funciones en C – Guía práctica
  8. Dominando punteros en C: Tutorial práctico guiado por expertos
  9. Entendiendo la relación entre arrays y punteros en C
  10. Dominando structs y punteros en C: Guía práctica
  11. Entendiendo constantes y literales en C: Tipos, uso y mejores prácticas