2012-03-27 77 views

回答

9

sizeof(str)是数组str的大小。在这种情况下,这是6(包括nul结束符)。所以sizeof(str)-1是5(它不包括nul终止符)。

str-1在C中有char*类型,在C++中有const char*,这是因为数组到指针的衰减。所以sizeof(str-1)是指向字符的指针的大小。它与用于定义str的特定字符串的长度无关。

另外,计算str-1是未定义的行为。方便sizeof不评估其操作数,所以这不是一个问题。

5

(根据调试时编译为64位)这是一个很大的区别。

int main(void) 
{ 
    char str[] = "Hello"; 

    sizeof(str-1); //gives 8 
    strSize = sizeof(str) - 1; //gives 5 
} 

的第一个实例是给指针的大小,因为自变量是指针运算的结果,第二给出了字符串的大小,少一个。

(指针的大小可能会有所不同。:-))

相关问题