函數是用戶與程序的接口,在定義一個函數前,首先要清楚以下三個問題。1) 函數的功能實現及算法選擇。算法選擇會在后續文章詳細講解,本節重點關注函數的功能實現。一般選取能體現函數功能的函數名,且見名知意,如求和函數的函數名可取為 add,求最大值的函數名可取為 max,排序函數可取名為 sort 等。2) 需要用戶傳給該函數哪些參數、什么類型,即函數參數。3) 函數執行完后返回給調用者的參數及類型,即函數返回值類型。 函教定義格式 函數定義的一般格式為: 返回類型 函數名 (類型參數1,類型參數2,…) {函數體 }也可以不含參數,不含參數時,參數表中可寫關鍵字 void 或省略,為規范起見,教程中對沒有參數的函數,參數表中統一寫 void。例如: 類型 函數名 () {函數體 }等價于: 類型 函數名 (void) //建議的書寫方式 {函數體 } 如果該函數沒有返回類型,則為 void 類型。例如: void add (int x,int y) {printf ("sum=%d\n", x+y); } 除了 void 類型外,在函數體中,均需要顯式使用 return 語句返回對應的表達式的值。 函教返回值 函數的值是指調用函數結束時,執行函數體所得并返回給主調函數的值。 關于函數返回值說明如下。1) 帶返回值的函數,其值一般使用 return 語句返回給調用者。其格式為: return 表達式;或者 return (表達式);例如: int add (int a, int b) {return (a + b); //return 后為表達式 } 函數可以含一個或多個 return 語句,但每次調用時只能執行其中一個 return 語句。例如,求整數絕對值的函數: int f (int n) //含多個return語句,但每次調用只執行一個 {if (n = 0)return n;elsereturn -n; }
在延壽等地區,都構建了全面的區域性戰略布局,加強發展的系統性、市場前瞻性、產品創新能力,以專注、極致的服務理念,為客戶提供成都網站設計、成都網站建設 網站設計制作按需網站開發,公司網站建設,企業網站建設,品牌網站設計,全網營銷推廣,外貿營銷網站建設,延壽網站建設費用合理。
C語言中,函數調用的一般形式為:
函數名(實際參數表)
對無參函數調用時則無實際參數表。實際參數表中的參數可以是常數、變量或其它構造類型數據及表達式。各實參之間用逗號分隔。
#includestdio.h
int?fun(int?x,?int?y);?//?函數聲明,如果函數寫在被調用處之前,可以不用聲明
void?main()
{
int?a=1,?b=2,?c;
c?=?fun(a,?b);?//?函數的調用,調用自定義函數fun,其中a,b為實際參數,傳遞給被調用函數的輸入值
}
//?自定義函數fun
int?fun(int?x,?int?y)??//?函數首部
{??//?{}中的語言為函數體
return?xy???x?:?y;??//?返回x和y中較大的一個數
}
擴展資料
C語言中不允許作嵌套的函數定義。因此各函數之間是平行的,不存在上一級函數和下一級函數的問題。但是C語言允許在一個函數的定義中出現對另一個函數的調用。
這樣就出現了函數的嵌套調用。即在被調函數中又調用其它函數。這與其它語言的子程序嵌套的情形是類似的。其關系可表示如圖。
圖表示了兩層嵌套的情形。其執行過程是:執行main函數中調用a函數的語句時,即轉去執行a函數,在a函數中調用b 函數時,又轉去執行b函數,b函數執行完畢返回a函數的斷點繼續執行,a函數執行完畢返回main函數的斷點繼續執行。
參考資料:函數調用_百度百科
C語言學習從入門到精通的一套經典視頻教程,本課程通過高清晰的視頻、概念詳解、實例精講、習題測試讓你很快的掌握C語言的相關知識,并領略運用到實例中去。在針對一些用戶認為C語言比較難學的情況下,本課程從初中級用戶的角度出發,進行合理的內容安排,突出學、練、用、鞏固相結合的特點,以通俗易懂的語言,豐富多彩的實例,詳細介紹了使用C語言進行程序開發應該掌握的各方面知識。本課程主要給大家講解了C語言概述,算法,數據類型,運算符與表達式,常用的數據輸入、輸出函數,選擇結構程序設計,循環控制,數組,函數,指針,結構體和共用體,位運算,預處理,模塊化編程,編程規范,C語言常見問題及分析,習題測試等內容。所有知識都結合具體實例進行介紹,涉及的程序代碼給出了詳細的講解,可以使讀者輕松領會C語言程序開發的精髓,快速提高開發技能。
課程內容詳盡,實例豐富,非常適合作為單片機及編程初學者的學習課程,也可作為大中院校相關專業在校學生及畢業生的教學輔導課程、短期C語言培訓課程,是C語言編程愛好者從入門到深入的經典課程。
課程共分為15講,每節課的內容大綱如下:
第1課 C語言概述
1、幾種常見的程序設計語言
2、C語言出現的歷史背景
3、C語言的特點
4、簡單的C程序介紹
5、C程序的上機步驟
6、習題測試
第2課 程序的靈魂-算法
1、程序設計過程
2、算法的基本概念
3、算法的特征
4、算法的表示方法(流程圖)
5、結構化程序設計方法
6、習題測試
第3課 C語言的數據類型
1、預備知識
2、C語言的數據類型
3、常量與變量
4、不同數據類型之間的轉換
5、運算符號和表達
6、習題測試
第4課 C語言順序程序設計
1、C語句概述
2、賦值語句
3、數據的輸入輸出
4、字符數據輸入輸出
5、格式輸入輸出
6、順序程序舉例
7、習題測試
第5課 C語言選擇程序設計
1、關系運算符和關系表達式
2、邏輯運算符和邏輯表達式
3、if 語句---條件判斷
4、條件運算符
5、switch 語句
6、選擇程序舉例
7、習題測試
第6課 C語言的循環控制
1、概述
2、goto語句及與if語句構成循環
3、while語句
4、do …while語句
5、for語句
6、循環的嵌套
7、幾種循環的比較
8、break語句和contiune語句
9、程序舉例
10、習題測試
第7課 C語言數組
1、一維數組
2、二維數組及多維數組
3、字符數組和字符串
4、程序舉例
5、習題測試
第8課 函數
1、概述
2、函數定義的一般格式
3、函數的返回值
4、函數的調用
5、函數參數及其傳遞方式
6、函數的嵌套與遞歸調用
7、數組作為函數參數
8、變量的存儲屬性
9、內部函數和外部函數
10、習題測試
第9課 C語言預處理命令
1、編譯預處理
2、宏定義
3、文件包含
4、條件編譯
5、習題測試
第10課 指針
1、指針的概念
2、指針變量
3、指針與數組
4、指針與字符串
5、指針與函數
6、返回指針值的函數
7、指針數組和多級指針
8、習題測試
第11課 結構體與共用體
1、結構類型與結構變量的定義
2、結構變量的引用與初始化
5、結構數組
6、指向結構類型數據的指針
7、用指針處理鏈表
8、共用體
9、枚舉類型
10、用typedef定義別名
11、程序舉例
12、習題測試
第12課 位運算
1、位運算概述
2、位運算符的使用方法
3、習題測試
第13課 單片機C語言的模塊化編程
1、模塊化編程的優點
2、C語言源文件(*.c)文件和頭文件(*.h)的的作用
3、模塊化編程設計步驟
4、程序實例
5、模塊化程序的移植
6、習題測試
第14課 C語言編程規范
1、編碼規范概述
2、編程排版規范
3、編程注釋規范
4、命名規則
5、可讀性規范
6、變量與結構規范
7、函數與過程規范
8、編程效率規范
9、質量保證規范
10、宏規范
11、代碼編輯
12、編譯
13、審查
14、代碼測試
15、維護
16、習題測試
第15課 C語言編程常見出錯問題及分析
1、C語言的一些基本概念
2、位(bit)和字節(byte)
3、變量和數據存儲
4、數據文件
5、字符串操作
6、數組
7、指針和內存分配
8、函數
9、編譯預處理
10、標準庫函數
11、系統調用
12、可移植性
13、編程風格和標準
14、程序的編寫和編譯
15、調試
在C語言中,一個標準的函數定義語句塊必須包含函數返回值的類型標識符、函數名、形參類型及數量、函數體、返回值表達式。如果函數返回值類型為 void (即無返回值),則在兩個大括號之間不能寫帶有返回值表達式的 return 語句,否則編譯器就會報錯。你寫的 test 函數返回值類型為 void,而你在函數定義語句塊內寫下了 return 語句,編譯器自然會報錯了。
你可以將這個函數修改為以下形式:
int test(int n)
{
int m = n / 2;
return m;
}