sizeof操作注意事项

以下是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位机器)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值