Unterschied zwischen "\ 0" und "\ 0"

7

Ich versuche das folgende Stück Code zu verstehen, aber ich bin verwirrt zwischen "\ 0" und "\ 0". Ich weiß, dass es albern ist, aber bitte hilf mir aus

%Vor%

Vielen Dank im Voraus

    
Fermi 19.10.2016, 10:51
quelle

3 Antworten

8

Doppelte Anführungszeichen erzeugen String-Literale. So ist "'""'" ein String-Literal mit dem einzelnen Zeichen 'int' , plus einem zweiten als Terminator. Es ist eine alberne Art, eine leere Zeichenfolge zu schreiben ( malloc() ist die idiomatische Methode).

Einfache Anführungszeichen sind für Zeichenliterale. sizeof (char) ist ein NULL -großer Wert, der das Zeichen mit dem Kodierungswert 0 darstellt.

Nissen im Code:

  • Wirf den Rückgabewert von %code% nicht in C.
  • Skalieren Sie die Zuweisungen nicht nach %code% , das ist immer 1, sodass kein Wert hinzugefügt wird.
  • Zeiger sind keine Ganzzahlen. Vergleichen Sie sie mit %code% in der Regel.
  • Die gesamte Struktur des Codes macht keinen Sinn, es gibt eine Zuweisung in einer Schleife, aber der Zeiger wird weggeworfen, wodurch viel Speicher verloren geht.
unwind 19.10.2016, 10:56
quelle
10

Sie sind anders.

"'int'" ist ein String-Literal mit zwei aufeinanderfolgenden Nullen und entspricht ungefähr:

%Vor%

'%code%' ist ein %code% mit dem Wert 0. Sie können immer 0 wo immer Sie %code% benötigen.

    
usr 19.10.2016 10:55
quelle
6

"{'""', 'if (str_temp=='if (str_temp==NULL)')'}" ist das Null-Abschlusszeichen.

strlen ist dasselbe wie %code% . Es ist eine Zeichenkette, die von einem verwirrten Programmierer geschrieben wurde, der nicht versteht, dass Zeichenketten-Literale immer automatisch null-terminiert werden. Richtig geschriebener Code wäre %code% gewesen.

Die Zeile %code% ist Unsinn, sie hätte %code% sein sollen. Nun ist %code% gleichbedeutend mit 0, was eine Null-Zeiger-Konstante ist, also funktioniert der Code glücklicherweise.

Wenn %code% einer Zeichenkette genommen wird, wo %code% das erste Zeichen ist, ist das nicht sehr aussagekräftig. Sie erhalten String-Länge Null.

    
Lundin 19.10.2016 10:56
quelle

Tags und Links