C++?指針傳遞的作用小結(jié)
本文主要介紹了C++ 指針傳遞的作用小結(jié),分享給大家,具體如下
void pointerTest(int num) { num = 20; } int main() { int num = 10; pointerTest(num); LOGI("%d", num) // 打印出來的結(jié)果是 10 return 0; }
在這個例子中,main 函數(shù)定義了整型 num,值為 10,然后以參數(shù)傳遞給 pointerTest 函數(shù),在 pointerTest 函數(shù)中,直接對傳進來的 num 賦值為 20。最終,打印出來的結(jié)果還是 10。
為啥呢?熟悉 java 的人很快會反應(yīng)過來,因為 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ù)據(jù)類型參數(shù)而言,只能對這個對象進行相應(yīng)的操作(get/set),并不能直接替換整個對象
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ù)中,對傳進來的指針進行取值(*)對外部參數(shù)進行修改。按照這個思路反推,那么我們在傳遞內(nèi)存地址給函數(shù) 其實是 提供函數(shù)修改參數(shù)的能力
到此這篇關(guān)于C++ 指針傳遞的作用小結(jié)的文章就介紹到這了,更多相關(guān)C++ 指針傳遞 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++ 面向?qū)ο蟪绦蛟O(shè)計--內(nèi)存分區(qū)詳解
這篇文章主要介紹了剖析C++的面向?qū)ο缶幊趟枷?C++的面向?qū)ο筇匦允瞧鋵語言的重要拓展之處,需要的朋友可以參考下,希望能夠給你帶來幫助2021-08-08c語言實現(xiàn)學(xué)生管理系統(tǒng)詳解
這篇文章主要為大家介紹了c語言實現(xiàn)學(xué)生管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>2021-12-12C/C++中for語句循環(huán)用法以及練習(xí)舉例
for語句是一種循環(huán)語句,它是對while語句的推廣,下面這篇文章主要給大家介紹了關(guān)于C/C++中for語句循環(huán)用法以及練習(xí)舉例的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-03-03C++實現(xiàn)LeetCode(237.刪除鏈表的節(jié)點)
這篇文章主要介紹了C++實現(xiàn)LeetCode(237.刪除鏈表的節(jié)點),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08C/C++函數(shù)調(diào)用的幾種方式總結(jié)
本篇文章主要是對C/C++函數(shù)調(diào)用的幾種方式進行了詳細的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12