*dringend* Pointer-Frage



  • Ja.

    Und was ist rot13?



  • http://de.wikipedia.org/wiki/ROT13
    eine verschlüsselung 🙂

    viel glück bei der klausur 🙂



  • Bini schrieb:

    Ja.

    Dieser String ist nicht modifizierbar, der String wird in einem evtl. nicht beschreibbaren Bereich abgelegt, man darf darauf nicht schreibend zugreifen. Probier mal 'char text[] = "...";' (beachte die []), dann klappt's auch mit dem Test.



  • elise schrieb:

    http://de.wikipedia.org/wiki/ROT13
    eine verschlüsselung 🙂
    viel glück bei der klausur 🙂

    zum entschlüsseln: http://retards.org/projects/rot13/



  • elise schrieb:

    viel glück bei der klausur 🙂

    Hallo Elise 🤡

    Wie lief es mit Mathe bei Dir??



  • Daniel E schrieb:

    Dieser String ist nicht modifizierbar...Probier mal 'char text[] = "...";'

    Schön, das geht 🙂

    Aber warum ist das eine modifizierbar und das andere nicht? Dachte immer, ein char-Array ist letztlich auch nicht anders als ein char-Pointer. Hm, war wohl zu kurz gedacht... 😞



  • Bini schrieb:

    Aber warum ist das eine modifizierbar und das andere nicht? Dachte immer, ein char-Array ist letztlich auch nicht anders als ein char-Pointer. Hm, war wohl zu kurz gedacht... 😞

    char *p = "hallo";   // p ist ein pointer
    char a[] = "hallo";  // a ist der name eines arrays
    p = "lala";          // das geht
    a = "blabla";        // das geht nicht
    


  • net schrieb:

    p = "lala"; // das geht
    a = "blabla"; // das geht nicht

    Hm? Ich denke, genau andersrum?! Wie nun?? 😕



  • Stichwort: String-Literal



  • Bini schrieb:

    net schrieb:

    p = "lala"; // das geht
    a = "blabla"; // das geht nicht

    Hm? Ich denke, genau andersrum?! Wie nun?? 😕

    Ein Zeiger kann woanders hin zeige.

    Beiweis:
    int* p;
    ++p;

    Ein Array kann nicht woanders hin zeigen (es ist ja ein array und kein zeiger und zeigt somit sowieso nie irgendwo hin)
    Beweis:
    int a[10];
    ++a;

    Ein Array kann in einem Zeiger Kontext aber dennoch oft zu einem Zeiger auf das erste Element werden.
    Beweis:
    int* p;
    int a[10];
    p=a;

    Gründe warum
    a[1]=7;
    geht aber
    p[1]=7;
    nicht geht

    Bei a haben wir ein Array, bei p einen Zeiger. "hallo" ist ein Stringliteral.
    Und genau da liegt das Problem. "hallo" ist konstant, es steht so fest in der binary drinnen. Es zu ändern geht nicht.
    anders bei einem array. denn ein array besitzt den speicher selbst und man kann daher den speicher auch ändern (während ein zeiger auf fremden speicher zeigt (dass dieser auch mal änderbar sein kann ist etwas anderes)).



  • Shade Of Mine schrieb:

    Bei a haben wir ein Array, bei p einen Zeiger. "hallo" ist ein Stringliteral.
    Und genau da liegt das Problem. "hallo" ist konstant, es steht so fest in der binary drinnen. Es zu ändern geht nicht.
    anders bei einem array. denn ein array besitzt den speicher selbst und man kann daher den speicher auch ändern (während ein zeiger auf fremden speicher zeigt (dass dieser auch mal änderbar sein kann ist etwas anderes)).

    Danke für Deine Antwort 🙂

    Der Professor konnte mir das übrigens nicht erklären 😞

    Ach ja: die Klausur lief super 🤡


Anmelden zum Antworten