万和城代理-万和城代理

  万和城代理-万和城代理【主管╇QV:555333】万和城代理【╇QV:555333】《优_质_平_台《《_《《置_顶_待_遇《《一步到位》》笔试遇到很多sizeof的小题,博主基础堪忧,怒总结如下,还是要巩固基础啊啊啊!

  sizeof操作符对象所占内存空间的大小,单位是字节

  关键词:char数组指针结构体

  sizeof(NULL)结果为1

  1.基本类型占内存大小

  32位机64位机器

  类型字节数

  int 4

  char 1

  指针4 8

  float 4浮点型

  long 4

  double 8双精度浮点型

  2.sizeof(指针)任意类型指针,结果为4

  3.sizeof(数组)元素大小*n

  注意:数组名作为参数传递时,退化为指针,不传值不退化

  如int data[30]={1,2,3,4};

  sizeof(data);//30*4为120

  int getSize(int data[]){

  return sizeof(data);}//返回4

  4.静态数组vs动态数组

  静态数组见上文,动态数组是初始化一个指针

  **********************************************************

  笔试题

  1.美图2014实习生笔试(2014.05.19),稍有改动

  char a[30]="abcdef";

  char*aa=new char[20];

  int b[30]={1,2,3,4,5};

  int*bb=new int[30];

  cout<<sizeof(a)<<endl;//30 char数组30*1

  cout<<sizeof(aa)<<endl;//4 char指针

  cout<<sizeof(b)<<endl;//120 int数组30*4

  cout<<sizeof(bb)<<‘\n‘<<endl;//4 int指针

  cout<<sizeof(a[3])<<endl;//1 char类型

  cout<<sizeof(b[3])<<endl;//4 int类型

  cout<<sizeof(aa+3)<<endl;//4 char指针

  cout<<sizeof(bb+3)<<‘\n‘<<endl;//4 int指针

  cout<<sizeof(*(aa+4))<<endl;//1 aa+4为指针,解引用为数组中元素,这里为空即NULL

  cout<<sizeof(*(bb+4))<<endl;

  cout<<getSize(b)<<endl;//4数组名作为参数传递,退化为指针万和城代理-万和城代理【主管╇QV:555333】万和城代理【╇QV:555333】《优_质_平_台《《_《《置_顶_待_遇《《一步到位》》

  2.搜狐笔试(2012.09.15)(未测试)

  C/C++语言:请问在64位平台机器下,以下程序的输出结果()

  char*string_a=(char*)malloc(100*sizeof(char));

  char string_b[100];

  printf("%d,%d",sizeof(string_a),sizeof(string_b));

  A.8,100

  B.100,8

  C.100,100

  D.8,8

  答:A

  string_a是一个指针,不管它指向的空间有多大,它本身的空间是固定的。在64位平台机器下,一个指针的大小是8。万和城代理-万和城代理【主管╇QV:555333】万和城代理【╇QV:555333】《优_质_平_台《《_《《置_顶_待_遇《《一步到位》》

猜你喜欢

转载自www.cnblogs.com/zhangweiqing/p/12825027.html