Verständnisproblem Zeiger und Arrays
-
Hallo,
ich komme eigentlich aus der Delphi Ecke und bin aber wegen Linux am umsteigen auf C...und habe folgendes Problem:
Ich benutze die Anleitung von pronix.de kapier aber etwas aus dem Abschnitt Zeiger auf Zeiger nicht.Beispiel:
char *sort[]={"Zeppelin" ,"Auto", "Amerika", "Programmieren" };oder
char *test="34"
Wieso funktioniert das? Ein Zeiger zeigt doch auf eine Addresse und hat selbst keinen Wert. Wie kann es dann sein das ich *test den "34" zuweisen kann?
Ich weise doch quasi einem Zeiger einen Wert zu. Ein Zeiger hat unreferenziert aber als Wert nur eine Addresse.
Erstellt das Programm (Compiler) automatisch ein Array irgendwo im Speicher (1.Beispiel)?!Danke für eure Hilfe!
-
Der Compiler erzeugt ein Array mit der länge des Strings im Heap.
Das mit dem * ist wirklich verwirrend gemacht [] wär da schon eindeutiger
-
Danke, jetzt hab ichs endlich kapiert!
-
"34" ist kein Wert, sondern ein String-Literal. Der Wert dieser Konstruktion ist in der Tat ein Zeiger auf diesen String.
-
Also mit anderen Worten kingruedi hatte recht?!
Was ist aber ein String Literal?
[ Dieser Beitrag wurde am 26.10.2002 um 23:50 Uhr von an0nym editiert. ]
-
Ein String Literal sind die Dinger, die mit "" eingeschlossen sind (um es grob zu formulieren ;))
-
Also das was man in Delphi allgemein als String bezeichnen würde, eine Menge von Char?!
-
Genau, ein String ist eine Zeichenkette, also eine Menge von chars (Zeichen).
-
nein, dass ist es nicht genau. Ein string ist zum Beispiel folgendes char *s;
aber ein String Literal bezieht sich nur auf die Konstanten im Quelltext also "ab" (wenn ich mich nicht irre)