c++中“ * ”,“&”可以一起用吗?如“ void fun(int *& a,int *&b) ”?

    技术2022-05-20  42

    搞清楚这个问题你要先明白指针和引用的概念,指针是一个地址“值”,就是说它本身也是一个“值”,引用是一个“值”的“别名”,也就是另一个名字,void fun(int *& a,int *&b) 中的a和b都是指针类型的引用,这样使用的好处在于避免了参数传递时的值传递,典型的例子就是 swap(int a,int b) { int c=a; a=b; b=c; } 这个函数目的是使a、b的值互换而实际使用中不能实现互换,因为值传递,而换为 swap(int &a,int &b) { int c=a; a=b; b=c; } 或者 swap(int *a,int *b) { int c=*a; *a=*b; *b=c; } 就可以了,引用传递和地址值传递都可以解决值传递带来的函数内部对数据的改变失效的问题,而有时候我们需要在函数内部对一个地址值进行改变,也就是指针进行改变,此时就要用到双指针和指针的引用,即地址值的指针或者地址值的引用,也就是void fun(int *& a,int *&b)。

    最新回复(0)