1.c++指標做形參,會有很多陷阱,很多時候也許並不如我們想的那樣。比如我們想通過乙個函式改變指標的值:
#includeusing
namespace
std;
void test_point(int *p)
intmain()
這段**明顯想通過函式改變p1的值,但是結果卻沒有變化,輸出仍舊是1。問題就出在關鍵點那裡!
2、再看乙個**:
#includeusing
namespace
std;
void test_point(int *p)
intmain()
這段**卻能夠改變輸出值。區別就在*p=a與p=&a之間。
3.《c++ primer(第四版)》105頁可以發現其中的解釋:
對p=&a,稱之為給指標賦值,意思是給指標本身乙個指向的物件。
而對*p=a稱之為通過指標進行賦值,意思是改變指標所指物件的值。
解釋如下:對於p=&a,就是把函式形參指標p指向a(給指標賦值,賦上a的位址即可指向a),臨時變數a在函式呼叫完之後就不復存在,實參p1
也不會被改變,*p1=4
;而*p=a就是通過指標進行賦值,也就是說*p是指指標p指向的值,給*p賦值a,就是給*p所指向的值賦值,指標傳參傳給形參p的是x的位址,也就是說在函式中*p其實表示給x賦值,這樣即使區域性變數a消失了,但是x的值早已通過指標真正改變了。
對C 中指標做函式形參的理解
函式形參不僅可以是基本資料型別,也可以是類型別,陣列型別,還可以是指標型別。c 中的指標是從c中繼承來的,c中引入指標主要有以下幾種作用 1.使引數可以雙向傳遞,也就是形參的值改變會引起實參的值的改變。這一功能在c 中已經可以用引用代替了,當然如果在c 中使用指標的這一功能也未嘗不可。2.提高資料傳...
形參中指標需要作為結果傳出函式
函式形參中的a需要作為函式執行結果傳出函式 void test int a 函式返回值作為函式執行結果傳出函式 int test intmain 總結 在向函式傳入指標時,若想要這個指標的位址上的內容作為函式執行結果傳出函式,函式內賦值一定要用 a b 的方式,因為函式內部的指標本身和傳入函式的指標...
引用形參 指標形參的使用
引用形參 指標形參可以改變主函式內的實參值 includeusing std cin using std cout using std endl 形參其實是在把實參傳遞給子函式的時候定義了乙個新的變數,但是這個變數的值和實參相等,所以在子函式裡無論怎麼修改都不會影響到呼叫它的函式的實參的值 int ...