1樓:
第乙個swap是交換指標,即交換位址,如你所說,這是形參的調換,實參不收影響
第二個swap是交換指標指向的內容,即交換2個位址裡面儲存的數值,他不是形參的交換
第乙個是交換p1,p2,第二個是交換*p1,*p2
2樓:戚文柏
對於這種題目,可以這樣去理解:函式傳遞引數就是把乙個變數賦值給另乙個變數,純粹是賦值,比如
int a=3,b;
b = a;
b = 4;
然道你說a變了嗎?
舉例:1.
void swap(int *p1,int *p2) //<==> int *p1 = pointer_1;int *p2 = pointer;只是將乙個變數的值賦給另乙個變數.
對於第二個:
void swap(int *p1,int *p2)
就不同了,操作的是位址,
你宣告乙個指標變數,給它賦值,就好比,編譯器是乙個地主,為pointer_1分配了一塊地,pointer_1又把這塊地授權給p1可以耕種,只要p1用"*"取位址符,開發了這塊地,那麼這塊地改變了,當pointer用"*"使用這塊地是,也一樣改變了.
說的不是很形象,不知道你懂不?一句話,傳參就是把乙個變數賦給另乙個變數,如果傳遞的是位址,那麼只用是用"*"取位址符,操作了位址的值,那麼傳入的變數的值也為改變,共用同乙個段記憶體.
3樓:匿名使用者
我最討厭這種風格的**,,,用垃圾**來形容都可以。
這位朋友,,,注意學習**風格的知識。。。。
第二個實現的調換,,不多說了。
說第乙個。。。
這話是main函式的呼叫語句if(a
這是函式定義void swap(int *p1,int *p2)
你應該明白,,,pointer_1與p1是不同的變數,他們有自己的儲存空間。
所以,pointer_1的值傳給p1,傳的是位址,所以p1也指向a.
ok ,,,呼叫swap(int *p1,int *p2),
現在,,,pointer_1指向a ,,,,p1指向a ,
然後,,,,你在函式搞來搞去,,,p1都指向a ...。。。
p1和pointer_1是不同的變數!!!對p1的操作不會影響pointer_1
ok,,,,執行swap函式以後,,,p1,,,和p2,都銷毀了,,,
c語言問題,求解答,求解答c語言問題
首先執行getchar,就是先讓你輸入乙個字元,然後執行putchar,就是將剛剛的字元輸出,然後判斷字元是不是 是的話退出,否則繼續執行迴圈。迴圈體只有乙個 getchar每接收乙個字元,putchar就進行輸出,當為 時,則!後面若還有字元,按換行鍵後則不會輸出 輸出的字元要從getchar函式...
子宮肌瘤問題,誰能幫我解答?高分懸賞
你知道子宮內膜分為3種,1.漿膜層肌瘤2黏膜層3肌壁間 只有2種會引起月經的異常,這個肌肉瘤會生長,當它慢慢長大會壓迫後面的直腸,通過神經反射,你媽媽就會壓迫症狀,我媽媽也長這個,一開始很小,慢慢越長越大,吃中藥沒用,最後還是選擇手術,你知道有微創手術,就是那種,像你媽媽還是手術,早晚的是,現在已經...
C語言問題,求解答,C語言問題,求大神解答
f函式中的a每次使用外面傳入的2,b是區域性變數,後每次都是1,c是靜態變數,函式每次執行會在上次值 1 所以最後執行三次,輸出為789 程式的輸出是 789 c語言問題,求解答 執行abc a 1 首先進行巨集代換過程,是把 a 1去替代 定義的巨集函式 x x 中的x,即得到式子 a 1 a 1...