c++基础 指针和引用

指针和引用
指针和引用的区别 指针存放某个对象的地址,其本身就是变量(命了名的对象),本身就有地址,所以可以有指向指针的指针;可变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变,引用就是变量的别名,从一而终,不可变,必须初始化。
1.定义和声明
指针是一个变量,其值是另一个变量的地址。声明指针时,使用 * 符号。
引用是一个别名,它是在已存在的变量上创建的。在声明引用时,使用 & 符号。
2.使用和操作
指针可以通过解引用操作符 * 来访问指针指向的变量的值,还可以通过地址运算符 & 获取变量的地址。
引用在声明时被初始化,并在整个生命周期中一直引用同一个变量。不需要使用解引用操作符,因为引用本身就是变量的别名 指针可以有多级,引用只能一级
3.空值和空引用
指针可以为空(nullptr)表示不指向任何有效的地址。
引用必须在声明时初始化,并且不能在后续改变引用的绑定对象。因此,没有空引用的概念。不存在指向空值的引用,但是存在指向空值的指针。
4.可变性
指针可以改变指针的指向,使其指向不同的内存地址。 引用⼀旦引用被初始化,它将⼀直引用同一个对象,不能改变绑定。
5.用途
需要返回函数内局部变量的内存的时候用指针。使用指针传参需要开辟内存,用完要记得释放指针,不然会内存泄漏。而返回局部变量的引⽤是没有意义的 对栈空间大小比较敏感(比如递归)的时候使用引用。使用引用传递不需要创建临时变量,开销要更小 类对象作为参数传递的时候使用引用,这是C++类对象传递的标准方式 。
函数指针
什么是函数指针,如何定义和使用场景 函数指针是指向函数的指针变量。它可以用于存储函数的地址,允许在运行时动态选择要调用的函数。
格式为:返回类型 (*指针变量名)(参数列表) 幅值方法:指针名 = 函数名; 指针名 = &函数名
使用场景:
1.回调函数: 函数指针常用于实现回调机制,允许将函数的地址传递给其他函数,以便在适当的时候调用。
2.函数指针数组: 可以使用函数指针数组实现类似于状态机的逻辑,根据不同的输入调用不同的函数。
3.动态加载库: 函数指针可用于在运行时动态加载库中的函数,实现动态链接库的调用。
4.多态实现: 在C++中,虚函数和函数指针结合使用,可以实现类似于多态的效果。
5.函数指针作为参数: 可以将函数指针作为参数传递给其他函数,实现⼀种可插拔的函数行为。
6.实现函数映射表: 在⼀些需要根据某些条件调用不同函数的情况下,可以使用函数指针来实现函数映射表。
函数指针和指针函数的区别
函数指针是指向函数的指针变量。可以存储特定函数的地址,并在运行时动态选择要调用的函数。通常用于回调函数、动态加载库时的函数调用等场景。
指针函数是⼀个返回指针类型的函数,⽤于返回指向某种类型的数据的指针。
评论
C语言/C++编程入坑频道图标
C语言/C++编程入坑
621成员
8
收藏
评论
2