Pointer verschachteln, was ist das?

Gast #2253652
Lesenswert?
• ▲
▼
Naja... das erste ist ein Pointer, der dereferenziert wird. Du greifst 
also auf den Inhalt der Speicherzelle zu, auf die er zeigt.
Das zweite ist ein Pointer auf einen Pointer, der zwei Mal 
dereferenziert wird. Du greifst also auf das zu, worauf der Pointer 
zeigt, auf den der eigentlich Pointer a zeigt... a -> anderer Pointer -> 
inhalt...
#2253719
Lesenswert?
• ▲
▼
Mike Mike schrieb:
> Ok, das habe ich verstanden. Muss ich vorher *a deklarieren, oder wird
> das automatisch deklariert, wenn ich **a deklariere?
>
> Danke

Da wird nichts automatisch deklariert.
Beispiel: Mögliches Speicherlayout (alles 32-Bit) für
int a = 123456;
int *aP = &a;
int **aPP = &aP;
1
Adresse Inhalt     Var
2
0       123456     a
3
4       0          aP
4
8       4          aPP
und &aPP wäre 8
#2255277
Lesenswert?
• ▲
▼
Da wird erst etwas drin gespeichert, wenn du etwas zuweißt. Nur durch
1
**a

wird lediglich Platz für einen Pointer auf einen anderen Pointer belegt. 
Der zeigt so erst mal irgendwo hin. Erst durch
1
*b;
2
**a = &b

wird festgelegt, dass a auf b zeigt. b zeigt in dem Beispiel genauso 
irgendwo hin, wo a im oberen Beispiel zeigt.

Ohne Zuweisung ist einfach nicht definiert, was in der Variable steht, 
sprich, in diesem Fall, wo hin gezeigt wird.
Gast #2255474
Lesenswert?
• ▲
▼
Schau dir mal die Funktion strtol() an. Da gibt es als zweiten Parameter 
den char **endptr.
endptr zeigt auf die Stelle, an der strtol nicht mehr weiter kommt.
Damit strtol den Wert von endptr ändern kann, muss es wissen wo der 
Zeiger selber ist.
1
long l;
2
char *pc, t[] = "12345abc";
3

4
l = strtol(t,&pc,10);
5
printf("Wert = %ld, Endptr: %s\n", l, pc);
#2255785
Lesenswert?
• ▲
▼
Rufus Τ. Firefly schrieb:
> Kann man auch etwas zuschwarzen
Also wenn schon dann zuschwartzen :-)

Sven H. schrieb:
> Wer Rechtscheibfehler findet, kann sie behalten.
immer cool bleiben, das war ein nett gemeinter Hinweis auf einen 
eklatanten Rechtschreibfehler, das ist Grundschulniveau Klasse 3. Damit 
könntest du dich mal ernsthaft blamieren, also ärgere dich nicht sondern 
lerne daraus.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren