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 Aufgabe
EinfachIm 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
squareals auch in der Funktionmainaus, 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;
}