@ Georg G. (df2au)
>> int *pointer = 0;
>Bist du sicher, dass dein Pointer an der Adresse 0 liegen soll?
Nö. Denn WO der Pointer liegt, sieht man hier sowieso nicht. Aber er
ZEIGT nach 0 (Inhalt des Pointers).
>Oder meintest du vielleicht
>int *ptr;
>*ptr = 0;
>und wolltest der Variablen, auf die ptr zeigt, den Wert 0 zuweisen?
Dazu sollte man den Pointer aber erstmal sinnvoll zuweisen ;-)
Man muss aber schon sagen, dass die C-Schreibweise hier ziemlich
irreführend ist. Und man sollte wissen, dass bei der Deklaration der nur
der Pointer initialisiert werden kann, NICHT jedoch auf das Ziel des
Pointers (klingt logisch, die Schreibweise suggeriert aber was
anderes!).
1 | int a; // einfache Variable
|
2 | int *pointer; // Deklaration, Pointer auf int
|
3 | int *pointer = 123; // Deklaration, Pointer auf int, Pointer wird mit 123 initialtisiert und zeigt damit auf Speicherzelle 123
|
4 | *pointer = 456; // Zugriff auf Speicherzelle über Pointer, das Ziel, worauf Pointer zeigt (ein int) wird auf 456 gesetzt
|
5 | pointer = &a; // pointer zeigt jetzt auf a
|