Zeiger auf char array
-
Hallo habe ein Funktion geschrieben char* erwartet.
void String::GetText (char *str) { for (int i=0;i<size;i++) str[i]=text[i];Aber wenn ich einen Übergeben will, funktioniert das nicht.
int main() { char c[10]; int *d=c; String::GetText(d);warum nicht?
-
Ganz klar - d ist kein char*, sondern ein int* (und das ist etwas anderes - da wundert es mich, daß die Anweisung 'int*d = c;' sich compilieren lässt).
-
Wenns blöd läuft und ich dein Klassenkonstrukt richtig verstanden habe kanns passieren das du über array grenzen hinaus schreibst.
Du iterierst bis zu size.
Size spiegelt aber die größe deiner membervariablen text wieder....
-
Physikus schrieb:
int main() { char c[10]; // int *d=c; -- so ein schwachsinn String::GetText(c); // nicht String::GetText(d);
-
Erstmal danke,
aber so wirklich hilft mir das auch noch nicht weiter.....
wie bekomme ich denn ein zeiger auch ein char???
wenn ich es so mache wie ich, bekomme ich doch normal ein zeiger auf das erste element des char????
-
void String::GetText (char *str[])könnte funktionnieren.
-
Ein char ist ein einzelnes Zeichen. Und ein char* zeigt auch technisch auf ein einzelnes Zeichen. Aber die Pointer-Arithmetik geht davon aus, daß ein Zeiger auf das erste Element eines Arrays zeigen könnte, so daß du über Index-Zugriff weitere Array-Elemente erreichen könntest:
void func(char* str) //str ist ein Zeiger auf ein char(-Array) { cout<<str[2];//drittes Zeichen des Arrays ... } int main() { char data[10]="Hallo!"; func(data); }PS: Und eine Konvention aus C besagt, daß ein "String" als nullterminiertes Zeichen-Array dargestellt wird - der Anfang der Zeichenkette ist an der Position, auf die dein Zeiger verweist, ihr Ende wird durch ein '\0' im Speicher markiert.