Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C-programmeren: Adressen & pointers doorgeven aan functies – Een praktische gids

C-programmeren: Adressen & pointers doorgeven aan functies

Leer hoe je geheugenadressen en pointers doorgeeft aan functies in C, met duidelijke voorbeelden en expert-uitleg.

In C laat het doorgeven van een adres in plaats van een waarde een functie direct de originele variabele manipuleren. Deze techniek, pointer doorgeven genoemd, is essentieel voor efficiënte code en voor het wijzigen van data over scopes heen.

Voorbeeld 1: Twee integers wisselen per referentie

#include <stdio.h>
void swap(int *n1, int *n2);
int main(void) {
    int num1 = 5, num2 = 10;
    /* Geef de adressen van num1 en num2 door */
    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;
}

Het uitvoeren van dit programma levert:

num1 = 10
num2 = 5

De swap()-functie ontvangt pointers n1 en n2 die wijzen naar de originele num1 en num2 variabelen. Door deze pointers te derefereren (*n1 en *n2), wisselt de functie de daadwerkelijke waarden in het geheugen, weshalb main() de bijgewerkte getallen ziet. Let op dat swap() void retourneert omdat het zijn argumenten direct wijzigt.

Voorbeeld 2: Een waarde verhogen via een pointer

#include <stdio.h>
void addOne(int *ptr) {
    (*ptr)++; /* Verhoog de waarde op het gegeven adres */
}
int main(void) {
    int i = 10;
    int *p = &i;
    addOne(p);
    printf("%d", *p); /* Print 11 */
    return 0;
}

Hier houdt p het adres van i. De addOne()-functie ontvangt datzelfde adres, dereferentieert het en verhoogt de onderliggende waarde. Na de aanroep weerspiegelt *p (en dus i) de nieuwe waarde van 11.

Deze voorbeelden illustreren de kracht van pointer doorgeven: functies kunnen variabelen wijzigen die buiten hun scope gedefinieerd zijn, wat efficiënte datamanipulatie zonder onnodige kopieën mogelijk maakt.

C Taal

  1. C# Keywords en Identifiers begrijpen: Regels, lijsten en best practices
  2. C# Bitwise en Bit Shift Operators: Een Uitgebreide Gids
  3. C# Classes & Objects: Fundamenten voor Robuuste OOP
  4. C# Abstract Classes & Methods: Een Praktische Gids
  5. C# Partial Classes en Methods: Een Praktische Gids
  6. C# Sealed Classes en Methods: Wanneer en Hoe Te Gebruiken
  7. Hoe je 1D- en 2D-arrays doorgeeft aan functies in C – Een praktische gids
  8. C-pointers onder de knie krijgen: Een praktische, expert-gids
  9. De relatie tussen arrays en pointers in C begrijpen
  10. C Structs en Pointers onder de knie krijgen: Een praktische gids
  11. C-constanten en literals: Types, gebruik en best practices