首页 > 代码库 > 【C++基础】sizeof 数组 指针 空NULL
【C++基础】sizeof 数组 指针 空NULL
笔试遇到很多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 数组名作为参数传递,退化为指针
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。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。