Problem mit Pointer - warum geht das nicht?



  • Hallo,

    also mein Problem ist folgender Code:

    char String[] = "Hallo";
    char* pString = (char*)&String;
    

    Ich will also den Wert von String in pString haben, das Problem ist ich hab nur ein "H".
    Also ich brauche es für eine Funktion die einen Pointer erwartet



  • Original erstellt von Polykarp:
    **Hallo,

    also mein Problem ist folgender Code:

    char String[] = "Hallo";
    char* pString = (char*)&String;
    

    Ich will also den Wert von String in pString haben, das Problem ist ich hab nur ein "H".
    Also ich brauche es für eine Funktion die einen Pointer erwartet**

    Arrays (Strings) zerfallen bei der Übergabe an Funktionen ohnehin in Zeiger. Du kannst Die Funktion also ganz einfach mit

    func(String);
    

    aufrufen.



  • String ist schon ein Zeiger!

    Lies dir mal referenzen-array durch. Insobesondere den hinteren Teil.



  • Original erstellt von Shade Of Mine:
    String ist schon ein Zeiger!...

    Das ist so nicht richtig!
    String ist der Name eines Vektors! Nur als Parameter einer Funktion wird ein Zeiger auf das Array an die Funktion übergeben. Oder wenn einer Zeigervariablen ein Vektor zugewiesen wird, bekommt diese Variable die Adresse des Vektors.



  • ok, danke



  • Original erstellt von mady:
    [QBDas ist so nicht richtig![/QB]

    *grmpf*
    Einigen wir uns auf "String ist die Start-Adresse des Array"?

    Denn was du sagst ist auch falsch!

    *(String+3) == String[3]
    String verhält sich wie ein *const.



  • Original erstellt von Shade Of Mine:
    Einigen wir uns auf "String ist die Start-Adresse des Array"?

    OK .. 🙂

    Denn was du sagst ist auch falsch!

    Was ist falsch an meiner Aussage?

    **(String+3) == String[3]
    String verhält sich wie ein const.

    Naja ... Wenn ich mir mal dieses Programm hier anschaue:

    #include <stdio.h>
    
    int main(void)
    {
        char * const p = "Hallo";
        char a[] = "Welt";
    
        (char *)p = "Schoene";
        printf("%s %s", p, a);
    
        return 0;
    }
    

    dann funktioniert die Sache. Wenn du aber eine Zuweisung wie '(char *)a = "...";' verwendest, geht's nicht...


Anmelden zum Antworten