array's
-
ist es so: bei char ist es eine ausnahme weil char's immer aus einem einzelnen zeichen bestehen, ein integer wert der aber aus z.b. 5 stellen besteht, braucht nicht ein array dafür und somit ist ein zeiger auf einen int nicht umbedingt gleich ein array, ein zeiger auf ein char aber ist immer gleich ein array aus einzelnen char's weil es eben immer nur ein zeichen sein kann?
so würde das für mich sinn machen.
-
Nein.
Ein Array von 5 chars sind 5 chars und keine 5 Zeiger.
Das mit der Umwandlung von Array zu Zeiger kommt daher, dass ein Array von 5 ints z.B. 5 im Speicher aufeinanderfolgende int Werte sind.
also, wenn a der Zeiger bzw. das array wäre, dann wäre *a das erste Element *(a+- das zweite, *(a+2) wäre das dritte. Und genau das macht der Indexoperator.
a[n] ist das selbe wie *(a+n)
- das zweite, *(a+2) wäre das dritte. Und genau das macht der Indexoperator.
-
//gleiche schreibweise, anderer typ - es geht
char *my_pchararray = "100";Kommt noch aus C-Zeite. Stringliterale sind statisch und können somit auch ohne dynamische Anforderung von Speicher benutzt werden. ( eigentlich ist es const char* ).
Die Benutzung dieser C-Strings sollte vermieden werden, da der Zugriff und Veränderung undefiniert ist. ( Alternative : std::string )
-
Übrigens ist die Mehrzahl von "Array" im Deutschen wie auch im Englischen "Arrays".
-
kann man keinen zeiger auf einen char setzen? mit jedem anderen daten typ geht das, sogar auf bool. aber mit char dann nicht? und danke für den tipp Badestrand (cooler name übrigens

-
Klar kann man einen Zeiger auf ein char haben.
-
@JustAnotherNoob: dann redet man nur bei z.b. vector (also dynamische arrays) von einer ansammlung von zeigern? std::vector<int*> myints; ist das richtig?
normale arrays wie int[5] ist also kein zeiger holder sondern es gibt nur ein zeiger selber, der auf das array zeigt, richtig?
und noch eins: int *myints = new int[5];
das ist eigentlich sowas ähnliches wie ein vector oder? hier werden doch auch wie in einem container, die 5 int zeiger bewahrt oder nicht?
-
Braunstein und wie sieht dann der syntax aus?
-
char* charptr = new char; // oder char ch; char* chptr = &ch;Wie sinnvoll das auch immer sein mag.
-
okay vielen dank euch allen.