C++?指針傳遞的作用小結(jié)
本文主要介紹了C++ 指針傳遞的作用小結(jié),分享給大家,具體如下
void pointerTest(int num) { num = 20; } int main() { int num = 10; pointerTest(num); LOGI("%d", num) // 打印出來的結(jié)果是 10 return 0; }
在這個(gè)例子中,main 函數(shù)定義了整型 num,值為 10,然后以參數(shù)傳遞給 pointerTest 函數(shù),在 pointerTest 函數(shù)中,直接對(duì)傳進(jìn)來的 num 賦值為 20。最終,打印出來的結(jié)果還是 10。
為啥呢?熟悉 java 的人很快會(huì)反應(yīng)過來,因?yàn)?int 是基本數(shù)據(jù)類型,要用引用數(shù)據(jù)類型。
public static void pointerTest(String str) { str = "wk"; } public static void main(String[] args) { String str = "test"; pointerTest(str); System.out.println(str); // 打印出來的結(jié)果是 test }
String 是引用數(shù)據(jù)類型了吧,但是打印出來的結(jié)果仍沒被改變
其實(shí)對(duì)于引用數(shù)據(jù)類型參數(shù)而言,只能對(duì)這個(gè)對(duì)象進(jìn)行相應(yīng)的操作(get/set),并不能直接替換整個(gè)對(duì)象
C/C++ 中得意于指針,能夠修改函數(shù)外的變量值
void pointerTest(int *num) { *num = 20; } int main() { int num = 10; pointerTest(&num); LOGI("%d", num) // 打印出來的結(jié)果是 20 return 0; }
字符串也是一樣的:(C中的字符串類型為 char*)
void pointerTest(char **str) { *str = "wk"; } int main() { char *str = "test"; pointerTest(&str); LOGI("%s", str) // 打印出來的結(jié)果是 wk return 0; }
在 pointerTest 函數(shù)中,對(duì)傳進(jìn)來的指針進(jìn)行取值(*)對(duì)外部參數(shù)進(jìn)行修改。按照這個(gè)思路反推,那么我們?cè)趥鬟f內(nèi)存地址給函數(shù) 其實(shí)是 提供函數(shù)修改參數(shù)的能力
到此這篇關(guān)于C++ 指針傳遞的作用小結(jié)的文章就介紹到這了,更多相關(guān)C++ 指針傳遞 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++ 面向?qū)ο蟪绦蛟O(shè)計(jì)--內(nèi)存分區(qū)詳解
這篇文章主要介紹了剖析C++的面向?qū)ο缶幊趟枷?C++的面向?qū)ο筇匦允瞧鋵?duì)C語言的重要拓展之處,需要的朋友可以參考下,希望能夠給你帶來幫助2021-08-08c語言實(shí)現(xiàn)學(xué)生管理系統(tǒng)詳解
這篇文章主要為大家介紹了c語言實(shí)現(xiàn)學(xué)生管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>2021-12-12C/C++中for語句循環(huán)用法以及練習(xí)舉例
for語句是一種循環(huán)語句,它是對(duì)while語句的推廣,下面這篇文章主要給大家介紹了關(guān)于C/C++中for語句循環(huán)用法以及練習(xí)舉例的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03C語言中程序環(huán)境和預(yù)處理的詳細(xì)圖文講解
這篇文章主要給大家介紹了關(guān)于C語言中程序環(huán)境和預(yù)處理的相關(guān)資料,我們寫的C語言代碼,從運(yùn)行,到在屏幕上生成結(jié)果,經(jīng)歷了比較復(fù)雜的過程,需要的朋友可以參考下2023-02-02C++實(shí)現(xiàn)LeetCode(237.刪除鏈表的節(jié)點(diǎn))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(237.刪除鏈表的節(jié)點(diǎn)),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08c語言實(shí)現(xiàn)php的trim標(biāo)簽
本文給大家介紹的是使用C語言實(shí)現(xiàn)php的trim標(biāo)簽功能的代碼,非常的實(shí)用,其主要作用是清除字符串開頭結(jié)尾除空白,有需要的小伙伴可以參考下。2016-01-01C/C++函數(shù)調(diào)用的幾種方式總結(jié)
本篇文章主要是對(duì)C/C++函數(shù)調(diào)用的幾種方式進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-12-12VC實(shí)現(xiàn)獲取當(dāng)前正在運(yùn)行的進(jìn)程
這篇文章主要介紹了VC實(shí)現(xiàn)獲取當(dāng)前正在運(yùn)行的進(jìn)程,涉及VC針對(duì)系統(tǒng)進(jìn)程的相關(guān)操作技巧,需要的朋友可以參考下2015-05-05