Zeiger auf Struktur im Kernighan/Ritchie

Gast #1335005
Lesenswert?

Hallo,

ich hab in der zweiten deutschen Ausgabe des Kernighan/Ritchie 
"Programmieren in C" etwas gefunden, dass ich nicht nachvollziehen kann. 
Für diejenigen die diese B uch auch haben gebe ich die Quellenangabe mit 
an.

zum Einen steht dort
[6.2 Strukturen und Funktionen, Seite 126]
1
struct point origin, *pp
2
pp = &origin;

zum Anderen steht dort
[6.2 Strukturen und Funktionen, Seite 127]
1
struct rect r,*rp=r;

Es soll jeweils eine Struktur und ein Zeiger auf die selbe Struktur 
definiert werden und danach der Zeiger mit der Sruktur initialisiert 
werden.
Das erste Bsp. kann ich nachvollziehen, da wird die Adresse der Struktur 
in den Zeiger geladen.

Wird beim zweiten Bsp. auch die Adresse der Structur in den Zeiger 
geladen? Wenn ja, würde es ja bedeuten dass folgende Zuweisungen das 
identische machen,
1
pp = origin;
2
pp = &origin;

UND DASS KANN KANN ICH MIR NICHT VORSTELLEN!
Persönliche Seite #1335007
Lesenswert?

(Nur meinen Meinung)

orgin und pp stehen nach der Zuweisung auf der selber Adresse, was du in 
einem änderst siehst du im anderen (& steht ja für die Adresse)

r und rp haben "nur" den selben Inhalt (also ein Kopie), stehen also auf 
unterschiedlichen Adressen (* steht ja für den Inhalt)

Aber ich meine C kann nicht einfach so structs kopieren...
#1335013
Lesenswert?

mikes schrieb:
> Hallo,
> ...
> zum Einen steht dort
> [6.2 Strukturen und Funktionen, Seite 126]
>
1
> struct point origin, *pp
2
> pp = &origin;
3
>

Hier fehlt ein Semikolon, aber egal.

>
> zum Anderen steht dort
> [6.2 Strukturen und Funktionen, Seite 127]
>
1
> struct rect r,*rp=r;
2
>


Das ist schlicht und ergreifend falsch.
Es müsste &r heißen.


> ...
> Wird beim zweiten Bsp. auch die Adresse der Structur in den Zeiger
> geladen? Wenn ja, würde es ja bedeuten dass folgende Zuweisungen das
> identische machen,
>
1
> pp = origin;
2
> pp = &origin;
3
>
>
> UND DASS KANN KANN ICH MIR NICHT VORSTELLEN!

Ich mir auch nicht, der gcc ebenfalls nicht und K&R inzwischen wohl
auch nicht mehr.
#1335021
Lesenswert?

... ... schrieb:
> (Nur meinen Meinung)
>
> orgin und pp stehen nach der Zuweisung auf der selber Adresse, was du in
> einem änderst siehst du im anderen (& steht ja für die Adresse)

falsch.
Es sind zwei Variablen, die jeweils an einer anderen Stelle stehen.

>
> r und rp haben "nur" den selben Inhalt (also ein Kopie), stehen also auf
> unterschiedlichen Adressen (* steht ja für den Inhalt)

falsch.
'*' steht für Zeiger in einer Deklaration.

>
> Aber ich meine C kann nicht einfach so structs kopieren...

falsch.
C kann prima structs kopieren.
Gast #1335038
Lesenswert?

>Hier fehlt ein Semikolon, aber egal.
Ja, ja, man sagt mir nach ich bin ein Schussel. Aber zum Glück merkts 
der Compiler im Gegensatz zum Problem in der Frage.

>Das ist schlicht und ergreifend falsch.
>Es müsste &r heißen

genau das wollte ich hören, wollte aber nicht aus fundiertem Halbwissen 
heraus die "Bibel" in Frage stellen.

Danke.
Persönliche Seite #1335058
Lesenswert?

Klaus Wachtler schrieb:
> ... ... schrieb:
>> (Nur meinen Meinung)
>>
>> orgin und pp stehen nach der Zuweisung auf der selber Adresse, was du in
>> einem änderst siehst du im anderen (& steht ja für die Adresse)
>
> falsch.
> Es sind zwei Variablen, die jeweils an einer anderen Stelle stehen.

Ich glaub wir meine das selbe...

Ich meinte damit das beide Var. den gleichen Inhalt haben oder ist das 
nicht so?

http://de.wikibooks.org/wiki/C-Programmierung:_Zeiger

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