sizeof操作符的使用详解

一直把sizeof当做函数来用,今天才发现它仅仅是个操作符而已。(严格来说,操作符也是函数,但是把它当做操作符来看更合适)

用法:

sizeof操作符的作用是返回一个对象或类型名的长度,返回值的类型为size_t(unsigned),长度的单位是字节(byte)。sizeof表达式的结果是编译时常量。有以下三种语法形式:

   
   
  sizeof (type name);
    sizeof (expr); // 获得该表达式的结果的类型长度
    sizeof expr; // 不计算表达式expr的值

举例说明:

   
   
sizeof ( int ); // 表达式值为4
sizeof int ; // 语法错误
sizeof ( 2 + 0.5 ); // 表达式值为8(原帖为4);
sizeof 2 + 0.5 ; // 表达式值为4.5

使用sizeof的结果部分地依赖于所涉及的类型:

  • 对char类型或值为char类型的表达式做sizeof操作保证得1
  • 对引用类型做sizeof操作将返回存放此引用类型对象所需的内存空间大小
  • 对指针做sizeof操作将返回存放指针所需的内存大小;如果要获取指针所指向对象的大小,则须对指针进行解引用
  • 对数组做sizeof操作等效于将对其元素类型做sizeof操作的结果乘上数组元素的个数。所以可以用sizeof数组的结果除以sizeof其元素类型的结果即可求出数组元素的个数

通过一个小程序来测试你是否理解了sizeof的用法,看下列程序的输出结果:

   
   
1 #include < iostream >
2 using namespace std;
3 size_t func( char a[])
4 {
5 return sizeof (a);
6 }
7 int main()
8 {
9 char a = ' a ' ;
10 char b[] = " hustor " ;
11 char c[] = { ' h ' , ' u ' , ' s ' , ' t ' , ' o ' , ' r ' };
12 char * d = " hustor " ;
13 cout << sizeof a << endl;
14 cout << sizeof b << endl;
15 cout << sizeof c << endl;
16 cout << sizeof d << endl;
17 cout << func(b) << endl;
18 cout << func(c) << endl;
19 cout << func(d) << endl;
20 return 0 ;
21 }

正确结果:

1

7

6

4

4

4

4

做对了吗,是不是很简单?如果还有什么问题,欢迎和我讨论

 

转自:http://www.cnblogs.com/sunj/archive/2011/03/26/1996516.html?login=1#commentform

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值