sizeof常见笔试题_第1页
sizeof常见笔试题_第2页
sizeof常见笔试题_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、sizeof 分析1.在32位系统中不同类型的内存分配1.1基本类型cpp代码Tj1. sizeof( int);/ = 42. sizeof( double);/ = 83. sizeof( char);/=14. sizeof( bool);/=15. sizeof( short);/=26. sizeof(float);/ = 47. sizeof( long);/=41.2指针指针在32位系统中占4个字节Cpp代码一1. sizeof( int *);/ = 42. sizeof( double *);/ = 43. sizeof( char *);/ = 41.3数组数组的sizeo

2、f返回整个数组所占的字节数,即(数组元素个数x每个元 素所占字节)。Cpp代码一1. int ai = 1,2;2. sizeof(ai);/ = 2*4 = 8常量字符串与字符数组的内存分配方式相同Cpp代码-1. char ac = "abed" 注意数组末尾的字符串终结符'0'2. sizeof(ac);/ = 5*1 = 53. sizeof("abcd");/ = 5*1 = 5数组和指针所占的字节数不同,应注意区分1. int *pi = new int10; 这是指针2. sizeof(pi);/ = 43.3. int a

3、i10;4. int *p = ai;这还是指针5. sizeof(p);/ = 47.6. double* (*a)36;/看成(double *) (*a)36,即一个 3 >6 的二维数组,数组元素为指针,指向double类型。7. sizeof(a);/ = 4,a为指向上述二维数组的指针8. sizeof(*a);/ = sizeof(double *)*3*6 = 72 ,*a 表示上述二维数组9. sizeof(*a);/ = sizeof(double *)*6 = 24 ,*a 即 *(*a),表示 double*6,是元素为double指针的一维数组。10. size

4、of(*a);/ = sizeof(double *) = 4 ,表示上述一维数组中的第一个元素,元素类型为double指针。11. sizeof(*a);/ = sizeof(double) = 8,表示上述数组首元素指向的double 类型。函数形式参数中的数组会蜕变为指针,原因是数组参数“传址调用”, 调用者只需将实参的地址传递过去。有一种情况例外,那就是参数是指向数组 的指针。1. void acf(char p3)参数类型是int,表示指向int的指针2. 3. sizeof( p );/ = 44. 5. void aif( int p)参数类型是int,表示指向int的指针6.

5、7. sizeof( p );/ = 48. 9. void pif( int (*p)6) /参数类型是int (*)6,表示指向int数组的指针10. 11. sizeof( p);/ = 412. sizeof( *p );/ = sizeof(i nt)*6 = 2413. 14. void ppf( int *p6)/参数类型是int *,表示指向int指针的指针15. 16. sizeof( p );/ = 417. sizeof( *p );/ = 418. 1.4.类和结构体的内存分配。空类或空结构体占一个字节Cpp代码®1. class CEmpty ;2. siz

6、eof(CEmpty); / = 13.3. struct SEmpty ;4. sizeof(SEmpty); / = 1非空类和结构体所占字节为所有成员占字节的和,但是不包括成员函数 和静态成员所占的空间。Cpp代码1. class Clnt : public CEmpty 2. int i;3. ;4. sizeof(C Int); / = 4;5.5. class CFunc 6. void f() 7. ;8. sizeof(CFu nc); / = 1;10.9. struct Sint: SEmpty 10. static int i;11. ;12. sizeof(SInt);

7、 / = 1;字节对齐为了加快计算机的取数速度,编译器默认对内存进行字节对齐。对结构体(包 括类)进行字节对齐的原则是:的大小所整除;offset )都是成员大小的整数倍,如有需要);1 )结构体变量的首地址能够被其最宽基本类型成员2)结构体每个成员相对于结构体首地址的偏移量( 编译器会在成员之间加上填充字节( in ternal addi ng3)结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节(traili ng paddi ng)。Cpp代码1. struct SBytel2. 3. double d; / 偏移量 074. char j; / 偏移量 85. int a; /偏移量1215,由于9不能整除4,故先填充9116. ;7. sizeof(SByte1); / = 168.8. struct SByte29. 10. char j;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论