【學習筆記】【C語言】函數,學習筆記c語言
一、 什麼是函數
任何一個C語言程式都是由一個或者多個程式段(小程式)構成的,每個程式段都有自己的功能,我們一般稱這些程式段為“函數”。所以,你可以說C語言程式是由函數構成的。
比如你用C語言編寫了一個MP3播放器程式,那麼它的程式結構如所示:
1 #include <stdio.h> 2 3 /* 4 1.什麼情況下定義函數:添加一個常用的新功能 5 6 2.函數的定義格式 7 傳回值類型 函數名(形式參數列表) 8 { 9 函數體10 }11 12 3.定義函數需要明確的東西13 1> 起一個有意義的函數名14 2> 15 */16 17 int printLine()18 {19 printf("-------------\n");20 return 0;21 }22 23 int average(int num1, int num2)24 {25 return (num1 + num2)/2;26 }27 28 int main()29 {30 /*31 printLine();32 33 printLine();34 35 printLine();36 */37 38 int a = 10;39 int b = 9;40 41 int c = average(a, b);42 43 printf("c is %d\n", c);44 45 int a1 = 11;46 int b1 = 20;47 48 int d = average(a1, b1);49 printf("d is %d\n", d);50 51 return 0;52 }
2.
1 #include <stdio.h> 2 /* 3 參數注意點 4 1.形式參數:定義函數時函數名後面中的參數,簡稱形參 5 2.實際參數:調用函數式傳入的具體資料,簡稱實參 6 3.實參個數必須等於形參個數 7 4.函數體內部不能定義和形參一樣的變數 8 5.如果是基礎資料型別 (Elementary Data Type)作為函數形參,純粹是值傳遞,修改函數內部形參的值,並不會影響外面實參的值 9 6.一個函數可以沒有形參,也可以有無限多個形參10 */11 12 // 形式參數,簡稱形參13 int sum(int num1, int num2)14 {15 // 函數體內部不能定義和形參一樣的變數16 // int num1;17 18 num1 = 50;19 20 return num1 + num2;21 }22 23 /*24 return的作用:25 1> 退出函數26 2> 返回一個具體值給函數調用者27 28 傳回值注意點29 1> void代表沒有傳回值30 2> 如果沒有明確說明傳回值類型,預設是返回int類型31 3> 就算明確聲明了傳回值類型,也可以不返回任何值32 33 預設情況下,C語言不允許兩個函數的名稱一樣34 */35 36 char test()37 {38 return 'A';39 }40 41 /*42 void test(int a, int b)43 {44 45 }*/46 47 void test5()48 {49 50 }51 52 /* 虛擬碼53 void login(QQ, 密碼)54 {55 // 1.驗證QQ有沒有值56 if (QQ沒有值) return;57 58 // 2.驗證密碼有沒有值59 if (密碼沒有值) return;60 61 // 3.把QQ、密碼發送到伺服器62 63 }*/64 65 int test3()66 {67 printf("999999999\n");68 }69 70 // 如果不明確聲明傳回值類型,預設就是int類型71 test2()72 {73 printf("888888888\n");74 return 10;75 }76 77 int main()78 {79 int c = test2();80 printf("c=%d\n", c);81 82 test3();83 //test();84 85 /*86 int a = 100;87 int b = 27;88 89 // a、b稱為函數的實際參數,簡稱實參90 int c = sum(a, b);91 92 93 printf("a=%d, b=%d, c=%d\n", a, b, c);*/94 95 return 0;96 }
3.函數練習
1 /* 2 求兩個整數的差 3 列印一條橫線 4 列印N條橫線 5 6 定義函數的步驟 7 1> 根據函數的作用,起一個有意義的名稱 8 2> 確定函數的形參個數 9 3> 確定函數的傳回值10 */11 #include <stdio.h>12 13 void printLines(int n)14 {15 for (int i = 0; i<n; i++)16 {17 printf("-------------------\n");18 }19 }20 21 void printLine()22 {23 printf("-------------------\n");24 }25 26 int minus(int a, int b)27 {28 return a - b;29 }30 31 int main()32 {33 printLines(10);34 //printLine();35 //printf("%d\n", minus(100, 29));36 37 return 0;38 }
4.函數注意點
1 #include <stdio.h> 2 /* 3 1.預設情況下,不允許有函數的名稱一樣 4 2.函數不能嵌套定義 5 3.函數不能重複定義,但是可以重複聲明 6 4.如果有函數的聲明,沒有函數的定義 7 1> 編譯可以通過,因為編譯器只會檢測文法合不合理,並不會檢測函數有沒有定義 8 2> 連結報錯,因為連結的時候會檢測函數是否定義 9 10 */11 12 // 函數的聲明13 //void printLine();14 //void printLine();15 //void printLine();16 //void printLine();17 //void printLine();18 //void printLine();19 20 int main()21 {22 void printLine();23 24 printLine();25 return 0;26 }27 28 // 函數的定義29 30 void printLine()31 {32 printf("--------\n");33 }