Char Unterschiede
-
Es funktioniert eindeutig...
nur er gibt mir eine Warnung raus....
PS.
Muss man hier Profi sein oder darf man auch als Anfänger Fragen stellen???Warum gleich so kritisieren???
-
Außer dem sagte keiner das die gleich sind, ich frage wo der unterschied sei....
-
Student 1.s schrieb:
Muss man hier Profi sein oder darf man auch als Anfänger Fragen stellen???
Muss man nicht, aber diese Warnung wird mit Sicherheit in einem Crash enden, irgendwann.
Der Unterschied besteht darin, dass Rechnung ein char-Array mit 30 Elementen ist und name of item eine so genannte Stringtabelle mit n Feldern à 30 Elemente.
-
also ich will man ein wenig konstruktiver sein.
Du hast auf der einen Seite ein Array von Zeichenketten, für den Compiler ist das ein char**. Rechnung ist allerdings nur ein char[30], für den Compiler ist das ein char*. Ich weiss ja nicht was du machen willst du könntest z.B. sowas ausprobieren wie
*name_of_item = rechnung;
oder
name_of_item[i] = rechnung;
Gruß
-
Vielen Dank,
keine Warnung mehr...
Solche Kleinigkeiten kriegt man kaum selber raus.
Mfg
-
im ernst, warum wolltest du einem array von strings einen string zuweisen?
-
Es ist mir wichtig an welcher Stelle der String steht, weil ich später eine neue Bedingung habe, die mir Rechnung arbeitet(mit der Stelle vo der String steht)
ich weiss nciht wie ich das anders machen kann...leider...
-
schau dir bitte dieses tutorial an, wenn du an deiner uni nichts beigebracht bekommst.
-
Noch mal Danke
-
fluxy schrieb:
also ich will man ein wenig konstruktiver sein.
Du hast auf der einen Seite ein Array von Zeichenketten, für den Compiler ist das ein char**.
Genau das ist es nicht! Warum? Nun weil der Arrayname (in den meißten Kontexten) in einen Zeiger auf das erste Element desselben "zerfällt". Mehr nicht! => Der Array-Name eines 2-Dimensionales Array "zerfällt" also in einen Zeiger auf ein 1-dimensionales Array selbigen Typs. (Oder anders gesagt: Der Array-Name eines 2D-Arrays "zerfällt" in einen Zeiger auf dessen erstes Element, welches ein 1D-Array enthält). =>
Ein 2-Dimensionales Array vom Typ T lässt sich implizit in einen Zeiger auf ein 1-Dimensionales Array vom Typ T konvertieren, aber nicht in einen Zeiger auf einen Zeiger vom Typ T.
Allgemeiner: Ein n-Dimensionales Array lässt sich implizit in einen Zeiger auf ein n-1-Dimensionales Array konvertieren.
Beispiel:
int vec[][2] = { { 7, 77 }, { 8, 88 }, { 9, 99 } }; // zwei dimensionales Array... int (*ptr_vec)[2] = vec; // Zeiger auf auf dieses Array... // int** ptr_vec = vec; // CRASH!
Gruß Caipi
-
nu jetzt verwirr den armen jungen mal nicht zu sehr....
-
fluxy schrieb:
nu jetzt verwirr den armen jungen mal nicht zu sehr....
Was heißt hier verwirren? Ich wollte _dich_ lediglich darauf aufmerksam machen, dass _du_ eine völlig falsche Information gabst, die den OP viel mehr verwirren könnte.
Gruß Caipi