指针的引用
在函数调用时用指针或者引用做参数,表示把变量的地址传递给子函数,但是子函数只能修改指针所指变量的值,并不能修改指针的指向。如果想要修改指针的指向,就要用指针的指针,或者指针的引用。
大部分情况下,用指针和引用做参数,只是想要修改指针所指变量的值,并没有想修改指针的指向。但是如果指针所指的这块内存在调用子函数结束之后发生了改变,就要用指针的引用或者指针的指针。
下面举几个典型的例子:
例子一:
链表做参数时,其实就是头结点的指针,在遍历,查找这种操作做子函数时,链表不会发生改变,就用头结点的指针做参数就可以了。但在增加,修改,删除这种操作时,链表会发生改变,这就表示头结点指针所指的这块内存会发生改变,也就是指针的指向可能会发生改变,这种情况下就要用头指针的引用。
在二叉树和图的子函数调用中是同样的道理,如果子函数会修改二叉树和图,就要用指针的引用。那块内存在主函数已经申请好了,但是在子函数中大小变了。
例子二:
在主函数中定义一个指针,要将这个指针做参数传给子函数,在子函数中分配2M内存,这时一定要用指针的引用。因为指针所指的这块内存发生了改变,或者说指针的指向发生了改变。主函数中只是定义了一个指针,并没有真正分配内存,子函数中才真正分配内存,指针指向哪才明确下来。
如果有时候不清楚该不该用变量的引用做参数,那就记住一点:
用指针的引用总是没有问题的。因为传递变量的地址比传递变量本身总是改的快。
相关阅读
弱引用和软引用WeakReference,SoftReference,最简讲解
他讲的很好,但是我看了一下,有些地方讲的不是很清楚,导致我当时困惑了一会。这里简单加点内容。实际上,Car car = new Car(22000,"sil
成员函数指针 函数指针中的函数都是全局作用域内的函数,而成员函数指针指向的函数往往都是某个类的非静态成员函数。使用如下
#include <iostream> #include <string> #include <vector> using namespace std; int main() { int i = 0; int *p1 = &i;
引用优酷视频可以减轻公司的服务器压力,而且和自己上传保存视频相比会方便轻松许多,不过相对的需要忍受广告。 首先你需要在优酷里
1、指针常量——指针类型的常量(int *const p) 本质上一个常量,指针用来说明常量的类型,表示该常量是一个指针类型的常量。在指针常