El siguiente códigocadena literal Sizeof
#include <iostream>
using namespace std;
int main()
{
const char* const foo = "f";
const char bar[] = "b";
cout << "sizeof(string literal) = " << sizeof("f") << endl;
cout << "sizeof(const char* const) = " << sizeof(foo) << endl;
cout << "sizeof(const char[]) = " << sizeof(bar) << endl;
}
salidas
sizeof(string literal) = 2
sizeof(const char* const) = 4
sizeof(const char[]) = 2
en un sistema operativo de 32 bits, compilados con GCC.
- ¿Por qué
sizeof
calcular la longitud de (el espacio necesario para) la cadena literal? - ¿La cadena literal tiene un tipo diferente (de char * o char []) cuando se administra a
sizeof
?
1, pero el tipo es en realidad 'array de N caracteres const' (const no es opcional) –
@dribeas: sí; Estaba ignorando los calificadores, pero estás pedantemente correcto. –
@JonathanLeffler ... el mejor tipo de corrección, especialmente cuando se trata de programación –