1樓:匿名使用者
因為交換的並不是值,而是指標。而指標本身是傳的值。意思就是在fun中雖然a指向了y,b指向了x但是a、b只是p和q的副本。
如果要交換變數值應該用int c,*c=*a,*a=*b,*b=*c。
2樓:阡陌她人只為你
首先形參站的記憶體和實參是不同的 ,雖然實參把地址傳過去了,相當於a,b儲存的內容是實參的內容,即x,y的地址a和b的改變不影響p和q,要想改變可把fun函式改為fun(int *a,int *b)
3樓:s土豪神
雖然函式形參取的是地址,但在具體函式中,進行調換的依然是區域性變數(a,b指標變數),應該改為*c=*a;*a=*b;*b=*c
c語言問題。之前看過類似這樣函式呼叫的題,說在函式呼叫過程中,形參的值改變,實參的值不會變化,但這
4樓:0相見不如懷念
呼叫函式,實參不抄變只適用於傳值引用的情況,注意看一下,你的main函式中呼叫f函式時,括號中的實參前面是加了&符號的,也就是說,把實參s陣列的地址傳遞過去了,那麼函式將會直接對s陣列中的資料進行運算,所以這種情況下實參會發生改變
5樓:喵不語
f函式的形參是指標通過地址傳遞當然改變實參,值傳遞不會改變!
c語言fun函式的功能是交換形參的值,不能交換實參的值,都是按值傳遞為什麼不能改變實參的值
6樓:匿名使用者
void fun(int *a, int *b)因為函式中襲,形參a,b中儲存bai的都是實參的地址du值,c=a;a=b;b=c;這行**zhi,只是把形參a,b的地址值進行了dao互換,對呼叫函式的實參所儲存的結果是沒有任何影響的。如果換成如下**:
void fun(int *a, int *b)互換的是指標所指空間的值,即互換了呼叫函式的實參所儲存的數值
C語言指標函式的問題,關於C語言指標函式的使用問題
你這個問題,就是典型的不瞭解編譯過程的人容易犯的錯誤,關於指標和記憶體分配的問題,樓上已經講了很多了,這裡補充一點 你這段 裡 str hello world 這樣的定義,hello world 字串是屬於const char,編譯的時候,會編譯在const資料區,這一段的資料是受系統保護的,是不允...
C語言的問題,為什麼是,C語言的問題,為什麼是
十進位制的7在ascii碼值表中對應的是bel bell 響鈴符 所以將其作為字元輸出時,進行了響鈴處理 給你一個ascii碼值表 bin dec hex 縮寫 字元 解釋 0000 0000 0 00 nul null 空字元 0000 0001 1 01 soh start of handing...
C語言指標函式中的問題,請教各位
函式 int max int q 是一個返回值指標函式,有一個形參,形參是一個整型 指標。在主函式中有語句p max a 這樣就把陣列的首地址作為實參傳給了形參q 至於 ptr q 其作用是記錄下陣列裡面較大數字的地址,在比較還沒有開始的時 候就暫且把陣列的第一個數看做最大,也就記下首地址,所以要有...