Char array per zeiger übergeben



  • hi leute, wie kann man ein char array mit einem zeiger übergeben?
    ich habe das so gemacht

    char mitarbeiter[3][10]={"Schmidt","Klein","Maier"};
    rechnung(&mitarbeiter[0][10]);
    

    aber das geht nicht. man kann immer nur auf den zweiten namen zugreifen
    und wenn ich die feldangaben vom array([0][10]) weglasse gibts ne fehlermeldung 😕
    kann mir jemand dabei bitte helfen?
    komm noch nicht so damit klar
    danke schonmal



  • ein array ist ein zeiger:

    rechnung(mitarbeiter); // ohne &
    
    rechnung(mitarbeiter + i*10); // wenn man auf die anderen elemente zugreifen will
    

    sollte funktionieren

    .MamboKurt



  • wenn ich rechnung (mitarbeiter); mache kommt die fehlermeldung
    "cannot convert char [][10] to char for argument 1 to void rechnung(char*)
    und das gleiche macht er auch bei rechnung(mitarbeiter + i*10); 😕



  • MamboKurt schrieb:

    ein array ist ein zeiger:

    nein

    @DeathRow

    char *mitarbeiter={"Schmidt","Klein","Maier"}; 
    rechnung(mitarbeiter[_hier_der_index_]);
    


  • char *mitarbeiter[]={"Schmidt","Klein","Maier"};



  • ok jetzt hab ich nur noch ein problem damit
    wenn ich das array nämlich mit ner for schleife in einer funktion ausgeben will
    erscheint als der gleiche name wieder
    hab es schon mit

    mitarbeiter+=1
    

    versucht aber dann macht er nur immer ein zeichen weniger
    z.b. so:
    schmidt
    schmid
    schmi
    da soll aber natürlich jedesmal der nächste name aus dem array ausgegeben werden
    wie mach ich das denn?



  • mitarbeiter[index];

    index: Zählvariable, z.B. index=1 Ausgabe: Schmidt



  • sry,
    eindimensionaler array ist ein zeiger auf das erste element....

    .MamboKurt

    [Edit]: wie sind in der hinsicht eigentlich zweidimensionale arrays gemacht? also ich dachte eigentlich, dass die elemente hintereinander im speicher liegen und man deshalb, wie beim eindimensionalen array auch mit dem zeiger arbeiten kann, da der array eben auf das erste element zeigt und der erste index bei der deklaration nur angibt, wie die adresse umgerechnet wir:

    int int_array[5][6];
    
    //dachte dies sei äquivalent:
    i = int_array[2][1];
    i = *(int_array + 2*5 + 1)
    

Anmelden zum Antworten