Menu
Coddy logo textTech

Wert vs. Pointer

Lektion 7 von 17 im Kurs Funktionen in C von Coddy.

Wenn wir Parameter an eine Funktion übergeben, können wir dies auf zwei Arten tun: als Wert (by value) oder als Zeiger (by pointer). Schauen wir uns ein einfaches Beispiel an, um zu verstehen, was wir mit Wert und Zeiger meinen:

#include <stdio.h>

void sum(int a) {
   a = a + 1;
   printf("sum function: %d\n", a);
}

int main(void) {
   int a = 10;
   sum(a);
   printf("main function: %d\n", a);
   return 0;
}

Die Ausgabe:

sum function: 11 
main function: 10 

Wie Sie in diesem Beispiel sehen können, verwenden wir den Wert, sodass sich der Wert der Variablen a nicht geändert hat. Wenn wir jedoch auf die Variable zugreifen und ihren Wert ändern müssen, können wir einen Zeiger als Parameter verwenden.

#include <stdio.h>

void sum(int *a) {
   *a = *a + 1;
   printf("sum function: %d\n", *a);
}

int main(void) {
   int a = 10;
   sum(&a);
   printf("main function: %d\n", a);
   return 0;
}

Da die Funktion nun einen Zeiger als Parameter akzeptiert, müssen Sie beim Aufruf die Adresse der Variablen übergeben:

sum(&a);

Die Ausgabe:

sum function: 11 
main function: 11 
challenge icon

Aufgabe

Einfach

Im gegebenen Code definieren wir eine Variable namens y.

  • Schreiben Sie eine Funktion square, die einen Zeiger auf eine Ganzzahl (Integer) als Parameter entgegennimmt.
  • Quadrieren Sie innerhalb dieser Funktion den Wert der Variable, auf die der Zeiger zeigt, und geben Sie ihren Wert aus.
  • Geben Sie den Wert der Variable sowohl in der Funktion square als auch in der Funktion main aus, um zu zeigen, dass die ursprüngliche Variable geändert wurde.

Probier es selbst

#include <stdio.h>


// square Funktion, um den Wert per Pointer zu quadrieren
 
int main(void) {

    int a = 200;
    
    // Rufe die square Funktion auf
     
    // Gib die ursprüngliche Variable aus 
    
    return 0;
}

Alle Lektionen in Funktionen in C