万和城代理-万和城代理【主管╇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】《优_质_平_台《《_《《置_顶_待_遇《《一步到位》》