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