面试中常被问到C/C++中数组,指针和引用的区别

Posted AllenSquirrel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试中常被问到C/C++中数组,指针和引用的区别相关的知识,希望对你有一定的参考价值。

C/C++中数组,指针和引用的区别

数组和指针:

数组指针
保存数据保存数据地址
可直接访问元素的值间接访问(首先获取指针内容作为地址,通过寻址找到元素的值)
一般大小固定,数据类型相同一般用于动态数据结构
隐式的分配和删除通过malloc分配内存,free释放内存
sizeof得到数组大小sizeof得到指针大小,默认指针大小为4字节
数组名表示数组存放首地址指针指向即为数据存放地址

指针和引用:

指针引用
指针在内存上开辟一块空间仅为变量别名,与变量共用同一内存空间
指针初始化可以为NULL引用必须被初始化,且必须是已有对象的引用
sizeof指针大小为4sizeof引用大小为被引用对象的大小
指针需要解引用才可以对对象值进行操作直接对引用的修改都会改变引用所指向的对象
指针在使用过程中可以指向其他对象引用只能是一个对象的引用,不能被修改
指针可以有多级指针(**ptr二级指针)引用只能一级
返回动态内存分配的对象或内存,必须指针返回动态内存分配的对象或内存,引用会导致内存泄漏
汇编角度:引用与指针汇编指令相同引用的底层就是依靠指针来实现,定义一个引用就是开辟指针大小的内存

 

以上是关于面试中常被问到C/C++中数组,指针和引用的区别的主要内容,如果未能解决你的问题,请参考以下文章

面试中常被问到new/delete和malloc/free区别

面试中常被问到(25)map和pair区别

面试中常被问到左/右值引用

面试中常被问到(12)进程与线程的区别

面试中常被问到STL标准库容器分类

面试中常被问到(11)虚函数/纯虚函数