Skip to content

Warum scanf die Adresse des Betreibers annehmen muss

Lösung:

Da C nur "Wertübergabe"-Parameter hat, müssen Sie also, um eine 'Variable' zu übergeben, um einen Wert einzugeben, ihre Adresse (oder einen Zeiger auf die Variable) übergeben.

scanf nimmt nicht "die Adresse des Operators (&)". Es dauert ein Zeiger. Meistens wird der Zeiger auf die Ausgabevariable mit dem address-of-Operator im scanf-Aufruf abgerufen, zB

int i;
scanf("%i", &i);
printf("number is: %dn", i);

Aber das ist nicht die einzige Möglichkeit. Folgendes gilt ebenso:

int *iPtr = malloc(sizeof(int));
scanf("%i", iPtr);
printf("number is: %dn", *iPtr);

Ebenso können wir das gleiche mit dem folgenden Code tun:

int i;
int *iPtr = &i;
scanf("%i", iPtr);
printf("number is: %dn", i);

Weil es braucht die Adresse um den gelesenen Wert zu platzieren. Wenn Sie Ihre Variable als Zeiger deklarieren, wird die scanf werde die nicht brauchen &.

Click to rate this post!
[Total: 0 Average: 0]



Anderer Beitrag

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.