C/C++: * 和 *&的区别

/**
* 
*  Althor:Hacker Hao
*  Create:2023.10.11
* 
*/

#include 
using namespace std;
void fun1(int* ptr) {
    *ptr = 3;
    ptr = NULL;    //不会改变原指针所指向的对象
}

void fun2(int*& ptr) {
    *ptr = 2;
    ptr = NULL;   //会改变原指针所指向的对象
    //也就是说把原来的t的地址和值也一起带着给改了
    //可以理解为解引用了一个地址值,最后把地址给改了
}


int main()
{
    int* t, a = 1;
    int b = 2;
    t = &a;
    printf("t:%d\n", *t);

    fun1(t);
    printf("foo1:%d\n", *t);

    fun2(t);
    printf("foo2:%d\n", *t);

    return 0;
}

图片理解:

C/C++: * 和 *&的区别_第1张图片C/C++: * 和 *&的区别_第2张图片

C/C++: * 和 *&的区别_第3张图片

你可能感兴趣的:(c语言,c++,算法)