następujący kodsizeof ciąg dosłowne
#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;
}
wyjścia
sizeof(string literal) = 2
sizeof(const char* const) = 4
sizeof(const char[]) = 2
na 32bit OS, skompilowane z GCC.
- Dlaczego
sizeof
oblicza długość (wymaganego miejsca) ciągu literowego? - Czy literał ciągów znaków ma inny typ (od char * lub char []), gdy podano go pod
sizeof
?
+1, ale typ jest właściwie tablicą znaków N const (const nie jest opcjonalna) –
@dribeas: yes; Ignorowałem kwalifikatory, ale jesteś pedantycznie poprawny. –
@ JonathanLeffler ... najlepszy rodzaj poprawności, szczególnie jeśli chodzi o programowanie –