Erzielen diese beiden Codezeilen das gleiche Ergebnis? Wenn ich diese Zeilen in einer Funktion hatte, ist die Zeichenfolge in beiden Fällen auf dem Stapel gespeichert? Gibt es einen guten Grund, warum ich einen über den anderen verwenden sollte, abgesehen davon, dass ich den Nullabschluss in der ersten Codezeile nicht deklarieren muss?In C, kann ich eine Zeichenfolge in einer Zeigerdeklaration auf die gleiche Weise initialisieren, wie ich eine Zeichenfolge in einer char-Array-Deklaration initialisieren kann?
char s[] = "string";
char* s = "string\0";
Nur zur Information, Sie brauchen das \ 0 im zweiten Beispiel nicht. Bei doppelten Anführungszeichen wird immer \ 0 in das Array eingefügt. – RMAAlmeida
Und nur für das Vokabular, worüber Sie sprechen, sind keine Zuweisungen, sondern Deklarationen mit Initialisierern. Sie gehorchen verschiedenen Regeln. E.g Ihre erste Anweisung wäre nicht als Zuweisung erlaubt, Sie können keine Arrays zuweisen. –
mögliche Duplikate von [C: Unterschiede zwischen Zeiger und Array] (http://stackoverflow.com/questions/1335786/c-differences-between-pointer-and-array) –