Char array per zeiger übergeben
-
hi leute, wie kann man ein char array mit einem zeiger übergeben?
ich habe das so gemachtchar 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
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 mitmitarbeiter+=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)