3 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
你只是在swap里交換了送進(jìn)來(lái)的兩個(gè)指針的參數(shù),這樣并不能真正的交換值。
swap應(yīng)該修改為:
void swap(int *a,int *b)
{
int t;
t=*a; *a=*b; *b=t;
}

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
void fun(int *a,int *b)
{
int *c;
c=a;c=b;b=c;
} 這個(gè)函數(shù)實(shí)際上什么都沒(méi)有做。形參 a,b中存的地址互換。只做這些沒(méi)有任何意義。
地址傳遞也是“傳遞”,
fun(p,q) 就是 a=p;b=q ,然后,函數(shù)里面 a<=>b p 與q里面存儲(chǔ)的地址沒(méi)有變化。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
函數(shù)在傳遞的時(shí)候,地址傳遞是不錯(cuò),ab交換了,可是pq未改變,原因是abpq都是變量,有存儲(chǔ)單元,但ap不是同一在存儲(chǔ)單元,同理bq也不是,剛傳遞的時(shí)候,a和p指向i,當(dāng)swap交換了ab,a就指向j,無(wú)關(guān)pq的事,pq的內(nèi)容不變,指向就不變。通過(guò)函數(shù)調(diào)用來(lái)改變指針變量,很危險(xiǎn),我建議少用為好。如果要用,可以用函數(shù)返回值的方法改變。
- 3 回答
- 0 關(guān)注
- 883 瀏覽
添加回答
舉報(bào)