python指针引用的区别_C++基础:指针和引用的区别
C++基礎(chǔ):指針和引用的區(qū)別
*例
int a;
int &b = a;
其中b是a的引用,b引用了a,a被b引用。b 相當(dāng)于 a 的別名,對 b 的任何操作就是對a的操作。所以b既不是a的拷貝,也不是指向a的指針,其實(shí)b就是a它自己。引用的規(guī)則:引用被創(chuàng)建的同時必須被初始化(指針則可以在任何時候被初始化)。
不能有 NULL 引用,引用必須與合法的存儲單元關(guān)聯(lián)(指針則可以是 NULL)。
一旦引用被初始化,就不能改變引用的關(guān)系(指針則可以隨時改變所指的對象)。
引用的主要功能是傳遞函數(shù)的參數(shù)和返回值。
C++ 語言中,函數(shù)的參數(shù)和返回值的傳遞方式有三種:值傳遞、指針傳遞和引用傳遞。成員函數(shù)的值傳遞
void FuncV(int x)
{
x = x + 10;
}
...
int n = 0;
Func1(n);
cout << "n = " << n << endl; // n = 0
由于 FuncV 函數(shù)體內(nèi)的 x 是外部變量 n 的一份拷貝,改變 x 的值不會影響 n, 所以 n 的值仍然是 0。成員函數(shù)的指針傳遞
void FuncP(int *x)
{
(* x) = (* x) + 10;
}
...
int n = 0;
Func2(&n);
cout << "n = " << n << endl; // n = 10
由于 FuncP 函數(shù)體內(nèi)的 x 是指向外部變量 n 的指針,改變該指針的內(nèi)容將導(dǎo)致 n 的值改變,所以 n 的值成為 10。成員函數(shù)的引用傳遞
void FuncR(int &x)
{
x = x + 10;
}
...
int n = 0;
Func3(n);
cout << "n = " << n << endl; // n = 10
由于 FuncR 函數(shù)體內(nèi)的 x 是外部變量 n 的引用,x 和 n 是同一個東西,改變 x 等于改變 n,所以 n 的值成為 10。
總結(jié)
對比引用傳遞、值傳遞和指針傳遞的示例可知,引用傳遞和指針傳遞的性質(zhì)基本一樣,而引用的傳遞調(diào)用方式更像"值傳遞"。
引用傳遞與指針傳遞的功能相似。
但指針能夠毫無約束地操作內(nèi)存中的任何東西,雖然指針功能強(qiáng)大,但是非常危險。
在程序中如果只需要借用一下程序的別名盡量用引用傳遞。
若你對人工智能(CV/NLP)、C++/python編程、互聯(lián)網(wǎng)就業(yè)及發(fā)展有興趣,歡迎點(diǎn)贊關(guān)注和收藏。謝謝鼓勵!!!
C++相關(guān)知識:Anxjing.AI:C++ this_thread::sleep_for?zhuanlan.zhihu.com
Anxjing.AI:C++ Lambda表達(dá)式?zhuanlan.zhihu.comAnxjing.AI:C++并發(fā)_condition_variable?zhuanlan.zhihu.comAnxjing.AI:生產(chǎn)者-消費(fèi)者模型?zhuanlan.zhihu.comAnxjing.AI:C++預(yù)處理指令?zhuanlan.zhihu.comAnxjing.AI:C++工具:Cmake?zhuanlan.zhihu.comAnxjing.AI:SSH 學(xué)習(xí)?zhuanlan.zhihu.comAnxjing.AI:記錄C++階段性學(xué)習(xí)一?zhuanlan.zhihu.comAnxjing.AI:DesignPatterns C++:單例模式?zhuanlan.zhihu.comAnxjing.AI:C++基礎(chǔ):map簡析?zhuanlan.zhihu.comAnxjing.AI:C++基礎(chǔ):memset函數(shù)簡析?zhuanlan.zhihu.comAnxjing.AI:C++基礎(chǔ):break&continue區(qū)別?zhuanlan.zhihu.comAnxjing.AI:C++基礎(chǔ):指針和引用的區(qū)別?zhuanlan.zhihu.comAnxjing.AI:C++中::和:, .和->的作用和區(qū)別??zhuanlan.zhihu.comAnxjing.AI:string中c_str()的使用方法和特性?zhuanlan.zhihu.comAnxjing.AI:C ++ strcpy()和strncpy()函數(shù)?zhuanlan.zhihu.comAnxjing.AI:C++基礎(chǔ)-關(guān)鍵字virtual?zhuanlan.zhihu.comAnxjing.AI:C++基礎(chǔ)-函數(shù)重載?zhuanlan.zhihu.comAnxjing.AI:C++基礎(chǔ)-static?zhuanlan.zhihu.comAnxjing.AI:C++基礎(chǔ):判斷文件是否存在的方法?zhuanlan.zhihu.comAnxjing.AI:C++基礎(chǔ)-strstr查找子串?zhuanlan.zhihu.comAnxjing.AI:C++基礎(chǔ):std::thread多線程?zhuanlan.zhihu.com
總結(jié)
以上是生活随笔為你收集整理的python指针引用的区别_C++基础:指针和引用的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 批量梯度下降python实现_pytho
- 下一篇: 用python编21点游戏_【Pytho