以下是MSDN中关于sizeof()的例子:
// expre_sizeof_Operator.cpp // compile with: /EHsc #include <iostream> size_t getPtrSize( char *ptr ) { return sizeof( ptr ); } using namespace std; int main() { char szHello[] = "Hello, world!"; cout << "The size of a char is: " << sizeof( char ) << "/nThe length of " << szHello << " is: " << sizeof szHello << "/nThe size of the pointer is " << getPtrSize( szHello ) << endl; }
运行以上程序,输出为:
The size of a char is: 1 The length of Hello, world! is: 14 The size of the pointer is 4 我们注意到同样是调用sizeof()函数在 << "/nThe length of " << szHello << " is: " << sizeof szHello这里调用的结果是14,而将sizeof() 函数放入每个接口中使用时返回的结果却是4.根据语法,siziof()函数用于数组只能测出静态数组的长度,无法检测动态分配或是外部数组的长度,函数外的 szHello是静态定义的数组,因此长度为14,而函数内部的设置szHello实际只是指向字符串的一个指针,因此用sizeof()只能得到结果4(对于32位机器)。 |