Bestimmen des Typs eines String-Literals
Viele Programmierer haben Schwierigkeiten, den Typ eines String-Literals zu verstehen. Ist es ein const char * (Zeiger auf ein konstantes Zeichen) oder ein const char (konstantes Zeichen)?
Die Antwort liegt in der Darstellung von String-Literalen in C. Anders als in C, wo Zeichenfolgenliterale als Zeichenarrays mit einem am Ende angehängten Nullterminator ('') gespeichert werden, sind Zeichenfolgenliterale in C grundsätzlich const char[N]. Hier bezeichnet N die Länge der Zeichenfolge (einschließlich des Nullterminators).
Im Wesentlichen sind const char[N] und char const[N] äquivalent. Dies bedeutet, dass Sie die Länge eines Zeichenfolgenliterals mithilfe von sizeof("hello") - 1 zuverlässig bestimmen können, wodurch die Anzahl der Zeichen in der Zeichenfolge (einschließlich aller eingebetteten Nullzeichen) genau berechnet wird. Wenn String-Literale Zeiger wären, würde dieser Ansatz scheitern, da er immer die Größe eines Zeigers in Ihrem System minus eins zurückgeben würde.
Das obige ist der detaillierte Inhalt vonWas ist der wahre Typ eines String-Literals in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!