Taille des littéraux de chaîne
Le code donné démontre l'utilisation de l'opérateur sizeof sur différents types de constantes de chaîne. Le résultat révèle que la taille d'une chaîne littérale, sizeof("f"), est différente de la taille d'un pointeur vers une chaîne littérale (sizeof(foo)), ainsi que de la taille d'un tableau de caractères (sizeof(bar )).
Pourquoi sizeof calcule-t-il la longueur d'une chaîne littérale ?
L'opérateur sizeof calcule la taille de son opérande en octets. Pour une chaîne littérale, l'opérande est la représentation de tableau de caractères correspondante, y compris le caractère nul de fin (' '). Cela explique la sortie de 2 pour sizeof("f"), car elle prend en compte les caractères 'f' et ' '.
La chaîne littérale a-t-elle un type différent lorsqu'elle est donnée à sizeof ?
Non. Une chaîne littérale a le type const char[N], où N est la longueur de la chaîne, y compris le caractère nul de fin. Cependant, lors du passage d'une chaîne littérale à l'opérateur sizeof, il traite la chaîne comme une expression de type const char*, qui est le type de pointeurs vers des caractères. Cela explique la sortie de 4 pour sizeof(foo), car il s'agit de la taille d'un pointeur sur une machine 32 bits.
Points supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!