[Js-C++]C++中*&(指針引用)和*(指針)的區別


很久之前學的C++了,復習一下,指針是一個存放地址的變量,而指針引用指的是這個變量的引用,眾所周知C++中如果參數不是引用的話會調用參數對象的拷貝構造函數,所以如果有需求想改變指針所指的對象(換句話說,就是要改變指針里面存的地址),就要使用指針引用,在網上看到大佬的代碼,簡單明了,如下

#include <iostream>

using namespace std;
struct point {
    int x;
    int y;
};

void changenum1(point *&pnum) {
    pnum = new point;
    pnum->x = 4;
}

void changenum2(point *pnum) {
    pnum = new point;
    pnum->x = 4;
}


void test1() {
    point *num = new point;
    num->x = 10;
    changenum1(num);
    std::cout << "指針引用" << num->x << endl;
}

void test2() {
    point *num = new point;
    num->x = 10;
    changenum2(num);
    std::cout << "指針" << num->x << endl;
}

int main() {
    cout << "開始執行程序" << endl;
    test1();
    test2();
    cout << "執行程序完畢" << endl;
    return 0;
}

輸出結果:

D:\Workspace\clion-workspace\star-referenceVSstar\cmake-build-debug\star_referenceVSstar.exe
開始執行程序
指針引用4
指針10
執行程序完畢

Process finished with exit code 0

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM