Цитата(ViKo @ May 12 2015, 08:42)

Что же, компилятор не знает длину строки, что хранит в своих таблицах?
А в чем проблема-то ? Читайте Кернигана с Ритчи и голова болеть не будет. Там все написано.
-- объявление указателя на инициализированный участок памяти
char* Buf = "abc";
sizeof(Buf) - это размер указателя на строку, в вашем случае, похоже, 4 байта.
sizeof(*Buf) - размер типа данных, на который этот указатель указывает, то есть char, в вашем сулчае 1 байт.
-- объявление _массива_
char Arr1[] = "asdf";
sizeof(Arr1) == sizeof(char)*_5_;
int Arr2[] = {1,2,3};
sizeof(Arr2) == sizeof(int)*3;
Длинна строки не обязательно должна быть равна длинне массива.
const char Str1 = "abcd\0asdf";
Длинна строки Str1 будет 4 символа.