Pointer/Zeiger



  • Hi,

    ich hab ne frage zu pointern. Alles steht in den comments.

    int alpha=1;
    int * pointer1;
    
    pointer1=α//pointer1 zeigt auf alpha(wert 1), kann man da nicht auch schreiben: pointer1->alpha?
    
    *pointer1=alpha; // was ist hier der unterschied zu oben?
    
    *pointer1++; // alpha wird um 1 erhöht?
    
    pointer2=pointer1; // pointer 2 wird initialisiert --> warum muss man hier keine sterne machen und oben schon?
    

    Danke!

    mfg James



  • james025 schrieb:

    pointer1=α//pointer1 zeigt auf alpha(wert 1),

    Hier erhält der Zeiger die Adresse von der Variablen alpha.
    pointer1 verweist auf alpha.

    james025 schrieb:

    kann man da nicht auch schreiben: pointer1->alpha?

    Nein, kann man nicht. Das ist etwas anderes.

    james025 schrieb:

    *pointer1=alpha; // was ist hier der unterschied zu oben?

    Hier weist du der Stelle auf die pointer1 verweist einen Wert zu.

    james025 schrieb:

    *pointer1++; // alpha wird um 1 erhöht?

    Es wird der Wert von der Stelle (auf die pointer1 verweist) genommen und dann wird pointer1 erhöht (in diesem Fall um sizeof(int) Byte)
    Was du denkst ist (*pointer1)++;

    james025 schrieb:

    pointer2=pointer1; // pointer 2 wird initialisiert --> warum muss man hier keine sterne machen und oben schon?

    Weil du hier die Adresse haben willst und nicht den Wert, auf den verwiesen wird.

    Mit * ist pointer1 wie ein int. Ohne * ist es ein Zeiger.



  • Nein
    Hier werden sizeof(int) Bytes aus dem Speicherbereich, den alpha repräsentiert in den Speicherbereich den pointer indirekt repräsentiert kopiert.
    Nein
    wenn pointer2 "int*" ist, wird hier der Speicherbereich, den pointer1 direkt repräsentiert in den Speicherbereich kopiert, den pointer2 direkt repräsentiert, es wird praktisch die Adresse an pointer2 zugewiesen, pointer2 zeigt danach auf denselben Speicherbereich wie pointer1; ?


Log in to reply