char und char*



  • Hallo,

    ich hab gelesen, dass der Name eines Arrays in Wahrheit ein Zeiger auf das erste Element eines Array ist. Wenn dem so ist, müßte es so richtig sein:
    char testArray[] = "Hallo";

    Wenn ich nun aber sowas habe:

    char testArray[] = {"Hallo", "Welt"};
    dann wird ein Fehler ausgeworfen,weil dann die Variable als Pointer markiert sein muss, also so:

    char* testArray[] = {"Hallo","Welt"};

    Warum ist das so? Was hat das mit der Anzahl der Element zu tun? Warum muss ich noch ein Sternchen setzen, wo doch die Variable, also der Bezeichner des Array schon einen Zeiger darstellt?

    Ich habe. so glaub ich, eine Erklärung gefundne im Net, aber so richtig hab ich sie nicht kapiert. Sort steht, dass die zweite Variante ein Array von Zeigern wäre, weil jedes Element,,also in dem Fall: Hallo und Welt jeweils ein Zeiger wären, also aauf das erste Element im ersten Fall auf H und im zweiten auf W. Bin ich da auf dem richtigen Dampfer?
    Danke 🙂

    Paloncino



  • paloncino schrieb:

    Warum ist das so?

    Eine normale Variable sieht so aus:

    Type var;
    

    wenn wir davon nun einen Zeiger wollen, sieht es so aus:

    Type* var;
    

    aber ein Zeiger ist ja nur ein normaler Typ (und jeder Typ kann zu einem Zeiger werden -> Type -> Type* -> Type**)

    Wir lassen also

    Type var;
    

    stehen. denn wenn Type == "int*" ist, dann ist var ein Zeiger.

    Nun gibt es aber auch Arrays:

    Type arr[n];
    

    wenn wir dieses Array nun mit 2 Elementen initialisieren wollen, sieht es so aus:

    Type a,b;
    Type arr[]={a,b};
    

    und nun nehmen wir an, a und b sind char*, dann sieht das ganze so aus:

    char* arr[]={"hallo", "welt"};
    

    also klar warum es char* heissen muss?


Anmelden zum Antworten