形參中指標需要作為結果傳出函式

2021-10-08 10:32:08 字數 856 閱讀 8564

//函式形參中的a需要作為函式執行結果傳出函式

void

test

(int

* a)

//函式返回值作為函式執行結果傳出函式

int*

test()

intmain()

總結:在向函式傳入指標時,若想要這個指標的位址上的內容作為函式執行結果傳出函式,函式內賦值一定要用 *a = *b 的方式,因為函式內部的指標本身和傳入函式的指標是不一樣的,只是這兩個指標的值相同,都指向同一記憶體區域,如果使用 a = b ,只是在對函式作用域內的這個指標的值進行修改,函式結束後這個指標的值就被釋放,並不能傳出函式。只有使用解引用直接操作指標指向的位址才能將執行結果傳出函式

void

test

(int

*p)//函式內會新構造乙個int *p的指標,其值等於傳入函式的實參*p

同時如果函式形參時指標,呼叫的實參傳入陣列名,在函式內部對陣列名指標進行加減也是正確的,在函式中使用 *陣列名 可以對具體元素進行修改,並且結果可以傳出函式

如:

//定義時:

void

test

(int

*p)//呼叫時:

int a=

;test

(a);

//執行結果是a[1]變成了3

若函式形參是指標,傳入函式中的形參是物件陣列名,在函式中通過 物件陣列名[i].屬性 進行的修改可以傳出函式

void

test

(classname *p)

指標作為函式形參

先來看兩個程式 程式1 include void fun int p int main void 輸出為 程式2 include void fun int p int main void 輸出為 對於程式2,不難理解 程式1,明明改變了p的指向了,為什麼還是輸出1呢?其實問題的關鍵不是指標作為形參的...

C 中指標形參問題

1.c 指標做形參,會有很多陷阱,很多時候也許並不如我們想的那樣。比如我們想通過乙個函式改變指標的值 include using namespace std void test point int p intmain 這段 明顯想通過函式改變p1的值,但是結果卻沒有變化,輸出仍舊是1。問題就出在關鍵...

C C 指標作為函式形參注意點

函式形參是指標變數,直接對其賦值 指標相互賦值 只是改變了它的指向,原先傳入的指標指向的內容並沒改變 若要想改動其指向的值,需要通過memcpy或通過指標呼叫賦值 include include include include include include include using namesp...