【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。

【C++基础】sizeof 数组 指针 空NULL

时间: 2024-10-05 18:50:33

【C++基础】sizeof 数组 指针 空NULL的相关文章

C++ 一维数组 二维数组 指针

1.int a[3] = {1, 2, 3}a代表数组的首地址&a[0]也是数组的首地址 2.// int a[2][2] = {0, 1, 2, 3}; // **a 就是 a[0][0] 第一行第一列.// *(*a + 1) 就是 a[0][1] 第一行第二列.// **(a + 1) 就是 a[1][0] 第二行第一列.// *(*(a + 1) + 1) 就是 a[1][1] 第二行第二列. 3.int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9

C语言基础知识----指针数组 &amp;&amp; 数组指针 &amp;&amp; 函数指针 &amp;&amp;指针函数

指针数组 && 数组指针 char (*ptr)[5]; //定义一个指向数组指针ptr,指向包含5个char类型的数组 char *a[5]; //定义一个指针数组a,包含5个char*类型指针 #include <stdio.h> int main(void) {     char *a[5]={"red","white","blue","dark","green"};   

javascript 判断变量 是否为空null,undefined, 空数组,空对象(空Object),字符串是否为空或全由空白字符组成,数字是否为0,布尔是否为false。

javascript 判断变量 是否为空null,undefined, 空数组,空对象,空Object,字符串是否为空或全由空白字符组成,数字是否为0,布尔是否为false.由于Object没有length用 Object.keys()适用于数组,对象 返回可枚举的实例属性名组成的数组来判断是否为空. 利用逻辑判断中or (||)只要有一项为真则不再计算下一个表达式 来实现不管传入的参数是何种类型.只要符合我对空的定义即返回true. 1 function IsNothing(e) { 2 va

黑马程序员---C基础10【数组指针】【指针数组】【字符串指针】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [数组指针] 1.数组指针: 定义一个指针指向数组的某一个元素 数组元素指针:指针变量可以指向数组元素: 1)数组名a不代表整个数组,只代表数组首元素的地址: 2)是指向首地址,而不是每一个元素:  2.数组指针的引用: 在指针向数组元素时,允许以下操作 加一个整数(用+或+=),如p+1: 减一个整数(用-或-=),如p-1: 自加P++ 自减p--; 两个指针相减:p1-p2: P+1指向

C基础--二重指针和数组指针

#include <stdio.h> int main1(void) { int a = 3; int b = 8; int *p = &a; // int* p = &a; int **q; // int** q; q = &p; **q = 10; *q = &b; **q = 5; p = &b; *p = 9; printf("a = %d\tb = %d\n", a, b); return 0; } //void fun(c

C++基础8【难】 回顾:数组指针,函数指针,函数指针做函数参数 C语言多态

1,数组指针语法梳理 回顾,如何定义数组数据类型: 回顾,如何定义指针类型数组: 回顾,如何直接定义 一个指向数组类型的指针: 2,函数指针语法梳理 1)如何定义一个函数类型 2)如何定义一个函数指针类型 3)如何定义一个函数指针(指向一个函数的入口地址) [中级程序员 转 高级程序员的 必经之路] 1,函数类型做函数的参数 把函数的入口地址传过来,奇怪的效果:[多态就是这样] 函数指针 做 函数参数 思想剖析 1,数组指针语法梳理 回顾,如何定义数组数据类型: [email protected

PHP递归方式把一个数组里面的null转换为空字符串”的方法

在一些接口的调用中,直接查询数据库出来的字段可能为null字段,但是为了简便前端的判断,需要把null转换成空字符串'',这个时候就需要递归的方式进行.直接上代码如下: //递归方式把数组或字符串 null转换为空''字符串 public function _unsetNull($arr){ if($arr !== null){ if(is_array($arr)){ if(!empty($arr)){ foreach($arr as $key => $value){ if($value ===

C++基础 (8) 第八天 数组指针 模板指针 C语言中的多态 模板函数

1昨日回顾 2 多态的练习-圆的图形 3多态的练习-程序员薪资 4员工管理案例-抽象类和技术员工的实现 employee.h: employee.cpp: technician.h: technician.cpp: source.cpp: 5员工管理案例-销售和经理实现 修改employee.h: displayStatus不用虚函数了 salesman.h: salesman.cpp: manager.h: manager.cpp: 6员工管理案例-销售经理的实现 7 中午回顾 注意: 多继承

C++基础之数组、指针与引用

一维数组的声明 ``` 数组类型 数组名 [常量表达式] ``` 常量表达式表示的是数组的个数,即数组的长度,且不能是变量. 一维数组的引用 ``` 数组名 [下标] ``` 一维数组的初始化 1.逐个对元素赋值 ``` char a[3] a[0] = 'a' a[1] = 'b' a[2] = 'c' ``` 2.聚合方式赋值 ``` int a[12] = [1,2,3,4,5,6,7] ``` 二维数组 ``` 数组类型 数组名 [常量表达式1][常量表达式2] ``` 下标运算中的整数