輸入a、b兩個整數,用指標按先大後小的順序輸出a和b
正確**:#include
void swap(int *p1,int *p2)
void main()
printf("max=%d\nmin=%d\n",*max,*min);}
錯誤**如下:
(1)void swap(int *p1,int *p2)
(2)void swap(int p1,int p2)
形參值的改變不能使實參的值隨之改變,在函式結束時,形參會釋放,不可能通過呼叫函式來改變實參指標變數的值,但是可以改變實參指標變數所指的值(即正確做法)。
(3)void swap(int *p1,int *p2)
*temp=*p1;是錯誤的,因為由於未給temp賦值,因此temp並無確定的值(其值不可預見),因此temp所指向的單元也不可預見,這個未知的儲存單元可能儲存著有用的資料,這樣可能破壞系統正常的工作狀況。故程式無法執行
C 結構體指標做函式引數不會改變實參的值
參考 在做一道經典的深度優先搜尋二叉樹的題目時遇到乙個問題,即c 中將結構體指標作為引數傳遞時,並不會改變實參的值!原因是當結構體指標傳遞給函式時,會拷貝乙份指標的值,但是函式內部的指標和函式外部的指標並不是指向同乙個引用的,所以才會使得函式裡面改變了,但是函式外部無變化,解決方案是在傳參的時候,將...
java 形參改變與實參的關係
主函式 change函式 執行結果 結論 變數傳遞到函式中時是形參,是不是陣列都有引數。對於非陣列變數,引用型別形參和實參的位址不一樣但是他們指向的位址是一樣的,但是形參改變時會指向另乙個地方而實參指向的地方值不會變比如下圖 假如有s hel 現在有函式改變他為s pic 實際變化如下圖 基本資料變...
C 中使用形參改變實參變數的值
當實參為普通變數的時候 若形參為指標,例如 bash int main void swap int x,y 另外一種情況就是形參為引用引數,int main void swap int x,y 即不是將實際引數的位址傳遞到函式形參中,而是直接將物件名 變數名 傳遞過去 2.當實際引數為陣列的時候 當...