交換函式作業

2022-06-06 23:24:11 字數 1922 閱讀 4456

#include//

定義標頭檔案

int main()//

定義主函式

void swap(int*a,int *b)//

交換函式的定義

請輸入兩個需要交換的數:

45,78

交換後的效果為:

78,45

--------------------------------process exited after

9.302 seconds with return value 0

請按任意鍵繼續. . .

總結:這個程式通過將變數的位址傳給交換函式的形參,通過位址交換輸入的變數,

形參和實參的指向是同樣的位址,達到交換的目的,執行時的錯誤就是入輸入

交換變數時中間的逗號格式必須是英文格式,不然將出現錯誤。

課堂問題一:

#includeint

main()

void swap(int*a,int*b)

請輸入需要交換的兩個數:

45,78

交換後的效果為:

我要檢視1

我要檢視2

--------------------------------process exited after

13.63 seconds with return value 3221225477

請按任意鍵繼續. . .

解釋:程式執行到定義完區域性指標變數後,程式被系統阻止而**編譯

時沒有問題,定義指標後,如果不對其進行初始化,指標的指向

是任意的,它可能指向系統中某個重要資料,對該指標直接賦值,

會改變系統中其他未知資料,影響其他程式的執行,出於安全考

慮,系統會阻止我們這樣做 ,因此這樣的程式無法執行。若是系

統不阻止,我猜程式能執行。

課堂問題二:

#includeint

main()

void swap(int *a,int *b)

請輸入需要交換的兩個數:

45,78

交換後的效果為:

4578

4545,78

--------------------------------process exited after

7.94 seconds with return value 0

請按任意鍵繼續. . .

解釋:這個呼叫函式原本想用交換位址的方式,達到交換變數的目的,

通過列印出的呼叫函式中各指標的指向可以看出各指標的指向,

但這程式實參向形參實際上就是個值傳遞 ,形參只是個實參的

拷貝,交換的只是拷貝過去的數,與原來的實參無關。所以呼叫

函式後任然是原來的順序。

通過指標輸出最大值:

#includeint

main()

int*swap(int*a,int*b)

請輸入需要比較的兩個數:

45,78

較大的數為:

78--------------------------------process exited after

5.187 seconds with return value 0

請按任意鍵繼續. . .

總結:本程式利用函式指標將返回值型別定義為指標型別,

並將返回值賦值給指標變數c,通過c將最大值輸出

這種小程式顯示不出函式指標的優點。不過用這種

程式能很好的鍛鍊和加深我們對指標的理解,熟練

掌握就是返回值時一定是指標型別,第一次執行時

還是返回了整型。應加深對指標的理解。

函式 呼叫指標交換函式(形參與實參)

譚浩強老師的書,很詳細,但是個人感覺很冗餘,就比如乙個指標引用陣列就窮舉了一遍實參形參的情況,像這些東西都能用一句 指標與陣列首位址等價 推出來的。這樣冗雜的內容別說幫助學習,簡直就是把知識複雜和模糊化。本人此系列一是複習一遍之前沒學好的c語言,二是提綱挈領地捋一下知識的難點,並且只說特殊及特別的東...

關於交換函式的指標內容

首先讓我們來寫乙個簡單的交換函式 void swap int a,int b int tmp a a b b tmp printf d,d n a,b int main int a 10 int b 20 printf d,d n a,b swap a,b return 0 執行以上程式,我們會得到...

作業 關於函式的

public class test02 hello system.err.println bye 可以完成特定功能的 塊,並且能重複呼叫 返回值 函式名 引數列表 函式體 public static void hello public static void println int x public...