如题所述
1.sizeof函数定义:
sizeof是何方神圣sizeof乃C/C++中的一个操作符(operator)是也,简单的说其作用就是返回一个对象或者类型所占的内存字节数。
2.sizeof函数
语法:
sizeof有三种语法形式,如下:
1) sizeof( object ); // sizeof( 对象 );
2) sizeof(type_name ); // sizeof( 类型 );
3) sizeof object; // sizeof 对象;
所以,
inti;
sizeof( i ); // ok
sizeof i; // ok
sizeof( int ); // ok
sizeof
int; // error
实际上,sizeof计算对象的大小也是转换成对对象类型的计算,也就是说,同种类型的不同对象其sizeof值都是一致的。这里,对象可以进一步延伸至表达式,即sizeof可以对一个表达式求值,编译器根据表达式的最终结果类型来确定大小,一般不会对表达式进行计算。如:
sizeof( 2 );// 2的类型为int,所以等价于 sizeof( int ); sizeof( 2 + 3.14 ); //3.14的类型为double,2也会被提升成double类型,所以等价于 sizeof( double);
sizeof也可以对一个函数调用求值,其结果是函数返回类型的大小,函数并不会被调用。
sizeof是何方神圣sizeof乃C/C++中的一个操作符(operator)是也,简单的说其作用就是返回一个对象或者类型所占的内存字节数。
2.sizeof函数
语法:
sizeof有三种语法形式,如下:
1) sizeof( object ); // sizeof( 对象 );
2) sizeof(type_name ); // sizeof( 类型 );
3) sizeof object; // sizeof 对象;
所以,
inti;
sizeof( i ); // ok
sizeof i; // ok
sizeof( int ); // ok
sizeof
int; // error
实际上,sizeof计算对象的大小也是转换成对对象类型的计算,也就是说,同种类型的不同对象其sizeof值都是一致的。这里,对象可以进一步延伸至表达式,即sizeof可以对一个表达式求值,编译器根据表达式的最终结果类型来确定大小,一般不会对表达式进行计算。如:
sizeof( 2 );// 2的类型为int,所以等价于 sizeof( int ); sizeof( 2 + 3.14 ); //3.14的类型为double,2也会被提升成double类型,所以等价于 sizeof( double);
sizeof也可以对一个函数调用求值,其结果是函数返回类型的大小,函数并不会被调用。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2014-04-28
sizeof其实不是个函数,它是个宏定义。写法为size_t sizeof(各种类型) 其中sizeof_t 就是int或者long。用于返回该类型的占用大小。需要注意的是如果对一个指针类型使用sizeof的时候,任何类型的指针返回的都是相同的长度,因为指针事实上相当于内存地址,所以返回的仅仅是内存地址的长度。追问
比如要申请5个a大小的空间,a=2.怎么申请
?
追答不好意思,我没太看懂你的追问。只能按我的理解做答了,申请五个a类型可以写成a a1 = new a(5)这是c++的写法。c的写法中会涉及到sizeof,写法为:a a1 = malloc(sizeof(a)* 5)
第2个回答 2015-10-07
sizeof( type_name )