#include//
定義標頭檔案
int main()//
定義主函式
void swap(int*a,int *b)//
交換函式的定義
請輸入兩個需要交換的數:45,78
交換後的效果為:
78,45
--------------------------------process exited after
9.302 seconds with return value 0
請按任意鍵繼續. . .
總結:這個程式通過將變數的位址傳給交換函式的形參,通過位址交換輸入的變數,
形參和實參的指向是同樣的位址,達到交換的目的,執行時的錯誤就是入輸入
交換變數時中間的逗號格式必須是英文格式,不然將出現錯誤。
課堂問題一:
#includeintmain()
void swap(int*a,int*b)
請輸入需要交換的兩個數:45,78
交換後的效果為:
我要檢視1
我要檢視2
--------------------------------process exited after
13.63 seconds with return value 3221225477
請按任意鍵繼續. . .
解釋:程式執行到定義完區域性指標變數後,程式被系統阻止而**編譯
時沒有問題,定義指標後,如果不對其進行初始化,指標的指向
是任意的,它可能指向系統中某個重要資料,對該指標直接賦值,
會改變系統中其他未知資料,影響其他程式的執行,出於安全考
慮,系統會阻止我們這樣做 ,因此這樣的程式無法執行。若是系
統不阻止,我猜程式能執行。
課堂問題二:
#includeintmain()
void swap(int *a,int *b)
請輸入需要交換的兩個數:45,78
交換後的效果為:
4578
4545,78
--------------------------------process exited after
7.94 seconds with return value 0
請按任意鍵繼續. . .
解釋:這個呼叫函式原本想用交換位址的方式,達到交換變數的目的,
通過列印出的呼叫函式中各指標的指向可以看出各指標的指向,
但這程式實參向形參實際上就是個值傳遞 ,形參只是個實參的
拷貝,交換的只是拷貝過去的數,與原來的實參無關。所以呼叫
函式後任然是原來的順序。
通過指標輸出最大值:
#includeintmain()
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...