面试中常被问到C/C++中数组,指针和引用的区别
Posted AllenSquirrel
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试中常被问到C/C++中数组,指针和引用的区别相关的知识,希望对你有一定的参考价值。
C/C++中数组,指针和引用的区别
数组和指针:
数组 | 指针 |
保存数据 | 保存数据地址 |
可直接访问元素的值 | 间接访问(首先获取指针内容作为地址,通过寻址找到元素的值) |
一般大小固定,数据类型相同 | 一般用于动态数据结构 |
隐式的分配和删除 | 通过malloc分配内存,free释放内存 |
sizeof得到数组大小 | sizeof得到指针大小,默认指针大小为4字节 |
数组名表示数组存放首地址 | 指针指向即为数据存放地址 |
指针和引用:
指针 | 引用 |
指针在内存上开辟一块空间 | 仅为变量别名,与变量共用同一内存空间 |
指针初始化可以为NULL | 引用必须被初始化,且必须是已有对象的引用 |
sizeof指针大小为4 | sizeof引用大小为被引用对象的大小 |
指针需要解引用才可以对对象值进行操作 | 直接对引用的修改都会改变引用所指向的对象 |
指针在使用过程中可以指向其他对象 | 引用只能是一个对象的引用,不能被修改 |
指针可以有多级指针(**ptr二级指针) | 引用只能一级 |
返回动态内存分配的对象或内存,必须指针 | 返回动态内存分配的对象或内存,引用会导致内存泄漏 |
汇编角度:引用与指针汇编指令相同 | 引用的底层就是依靠指针来实现,定义一个引用就是开辟指针大小的内存 |
以上是关于面试中常被问到C/C++中数组,指针和引用的区别的主要内容,如果未能解决你的问题,请参考以下文章