myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

Pointerfrage und -Problem

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 11.12.12, 21:45   #1
TehEbil
BoZz
 
Registriert seit: Nov 2009
Beiträge: 39
Bedankt: 5
TehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt Punkte
Standard Pointerfrage und -Problem

Folgender Code:

Code:
int nummer = 1, 
        *pointer = 0;

    pointer = &nummer;
    printf("1 %x\n", &pointer);
    printf("2 %x\n", pointer);
    printf("3 %x\n", *pointer);

    printf("4 %d\n", &pointer);
    printf("5 %d\n", pointer);
    printf("6 %d\n",*pointer);

    printf("2 %x\n", pointer);
    printf("1 %x\n", &pointer);
    printf("3 %x\n", *pointer);

    printf("5 %d\n", pointer);
    printf("4 %d\n", &pointer);
    printf("6 %d\n",*pointer);
Wieso ist dasselbe mit dem kaufmännischen Und um 12 Einheiten größer? (Integer -> 4, also 3 bytes)?

Und zweitens - ein Pointer hat keinen eigenen Wert, stimmt das?

MfG
__________________
Ich lese mir die [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] durch, bevor ich eine Sig erstelle!
I read the [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] before I create a signature.
TehEbil ist offline   Mit Zitat antworten
Ungelesen 11.12.12, 21:49   #2
Your_Conscience
Hinter dir!
 
Registriert seit: Apr 2010
Beiträge: 1.125
Bedankt: 487
Your_Conscience ist noch neu hier! | 0 Respekt Punkte
Standard

Ein Pointer ist nur ein Zeiger auf eine Speicheradresse, der Wert eines Pointers ist also sozusagen die Adresse auf die er Zeigt.
Zu dem "um 12 Einheiten größer":
Du fragst nirgends den Speicherplatz ab!?
Your_Conscience ist offline   Mit Zitat antworten
Ungelesen 11.12.12, 22:32   #3
TehEbil
BoZz
 
Registriert seit: Nov 2009
Beiträge: 39
Bedankt: 5
TehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt Punkte
Standard

Las das mal bitte abspielen. Wenn die Speicheradresse um 12 verschoben ist, heißt das nicht dann, dass die um diese Größe größer ist?

printf("4 %d\n", &pointer);
printf("5 %d\n", pointer);
__________________
Ich lese mir die [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] durch, bevor ich eine Sig erstelle!
I read the [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] before I create a signature.
TehEbil ist offline   Mit Zitat antworten
Ungelesen 11.12.12, 23:14   #4
slahn
Erfahrenes Mitglied
 
Benutzerbild von slahn
 
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
slahn ist noch neu hier! | 0 Respekt Punkte
Standard

Also printf("4 %d\n", &pointer); gibt dir die Adresse von "pointer" als Integer aus und printf("5 %d\n", pointer); gibt dir die Adresse von "nummer" (also die Adresse von dem Element auf das "pointer" zeigt) als Integer aus.

Also einmal alles zusammengefasst:

pointer -> gibt dir die Adresse auf die "pointer" zeigt (in deinem Fall die Adresse wo "nummer" im Speicher liegt
&pointer -> gibt dir die Adresse wo "pointer" liegt (bzw. die Adresse wo der Wert von "pointer" gespeichert ist und somit die Adresse wo die Adresse hinterlegt ist, auf die "pointer" zeigt)
*pointer -> Gibt dir den Wert zurück, auf den "pointer" zeigt (in deinem Fall den Wert von "nummer")

&pointer funktioniert nicht anders wie deine Zuweisung pointer = &nummer; ... Da gibst du "pointer" die Adresse von "nummer" ... mit &pointer bekommst du eben die Adresse von "pointer" ... denn auch ein Pointer hat eine Adresse und man kann eben auch Pointer auf Pointer machen (int **pointerPointer; ).
__________________
"[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]" (Klopfers Vater)
slahn ist offline   Mit Zitat antworten
Ungelesen 12.12.12, 00:07   #5
Your_Conscience
Hinter dir!
 
Registriert seit: Apr 2010
Beiträge: 1.125
Bedankt: 487
Your_Conscience ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von TehEbil Beitrag anzeigen
Las das mal bitte abspielen. Wenn die Speicheradresse um 12 verschoben ist, heißt das nicht dann, dass die um diese Größe größer ist?
Um dir diese Frage noch zu beantworten: nur wenn die Variablen im RAM direkt hintereinander gespeichert werden und eine Größe von %4 = 0 besitzen.
Du kannst die Größe einer Varibale mit sizeof ermitteln.
Auf 32 Bit Rechnern benötigen int-Variablen sowie Pointer stets 4 Byte, auf 64 Bit Rechnern (und mit einem 64 Bit Compiler compiliert) benötigen diese 8 Byte,
Your_Conscience ist offline   Mit Zitat antworten
Ungelesen 12.12.12, 16:05   #6
TehEbil
BoZz
 
Registriert seit: Nov 2009
Beiträge: 39
Bedankt: 5
TehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt PunkteTehEbil putzt sich die Zähne mit Knoblauch. | 4642 Respekt Punkte
Standard

Okay, ich danke euch
__________________
Ich lese mir die [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] durch, bevor ich eine Sig erstelle!
I read the [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] before I create a signature.
TehEbil ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:46 Uhr.


Sitemap

().