函數是具備特定功能的模塊。能夠說一個完整的程序實際上是由多個函數共同完成的。C語言的所有工做都是由程式各樣的函數完成的,因此也把C語言稱爲函數式語言。使用模塊化設計可能 使程序的層次結構清晰,全球程序的編寫、閱讀、調試。windows
就像你同樣,說你從性別的角度分屬於男仍是女?若是從膚色的角度分你是屬於黃種人仍是白種人?若是從高低的角度分你是屬於高的,仍是低的呢?因此說同一類事物能夠從不一樣的角度進行分類。函數也是同樣從定義的角度分爲庫函數和自定義函數、從傳遞參數的角度分爲有參函數與無參函數、從返回值的角度分爲有返回值函數與無返回值函數。各類函數的區分請參照以下:模塊化
變量的有效做用範圍稱爲變量的做用域。按照有效做用範圍能夠把變量分爲全局變量和局部變量兩種。函數
全局變量是在函數外部定義的變量,也稱全程變量,或外部變量。全局變量的做用域是從變量定義的位置開始,到所在源文件結束。全局變量的操做範圍,屬於其定義所在的源程序文件中。以下圖所示:spa
如上圖所示a、b、x、y、m、n這六個變量做用不一樣,因此若是用全局變量,那麼咱們最好使用a、b這兩個變量定義時的方法,寫在全部函數的上頭。設計
局部變量也稱爲內部變量,指在函數內部定義的變量。或一對花括號「{}」裏的變量,只在其定義的範圍內起做用,範圍以外沒法訪問。調試
舉例:code
void fun(int a,int b) { int x,y; }
其中變量a、b、x、y都是局部變量,做用範圍就是函數fun內。blog
經過下面程序段咱們來看下函數思惟的過程,以及函數的定義和使用過程。內存
/* Note:Your choice is C IDE */ #include "stdio.h" void check(int a);//聲明函數 void main() { int num; printf("請輸入一個數:"); scanf("%d",&num); check(num); } void check(int a) // 形參 { if(a%3==0&&a%4==0) //與 且 都 而且 printf("%d是3與4的倍數\n",num); //一名話可加可不加{} else printf("%d不是3與4的倍數\n",num); }
注意:參數傳遞作用域
1:只能實參傳給形參
2:參數之間用逗號隔開
3:傳遞時個數要一致,類型要一致
在全局上自定義函數應該在主函數以前有一個說明,目的是告訴系統在主函數中要用到一個自定義函數,被主函數直接調用或間接調用。說明的時候就要寫清楚這個函數的數據類型是什麼,自變量有幾個,都是什麼數據類型的。
如:語句 void check(int a);
聲明方式是:函數頭+;
函數的定義的格式爲:
void 函數名( )
{
說明部分;
語句部分;
}
無參無返回函數的調用格式是經過函數名來調用的.
無參函數的調用格式爲:函數名();
針對案例當中須要咱們理解形式參數與實在參數說明以下:
(1) 形式參數是在定義函數時放在函數名稱以後的括號中的參數。在函數未被調用時,系統不對形式參數分配內存單元。在函數被調用時,系統會馬上給形式參數分配內存單元;調用結束後,再釋放掉形式參數所佔有的內存單元。所以,形式參數屬於局部變量,其做用域限定在它所在的函數體內。這就不難理解在定義函數時爲何要指定形參變量的數據類型了。
(2) 實在參數是一個具備肯定值的表達式。函數在調用時,要將實在參數賦給形參變量。好比代碼中if(check(num)==1)調用子函數,這時num爲實在參數,在這以前變量num是被賦過具體值的。在函數被調用後,系統會把num的值賦給形式參數a.
注:實在參數的個數及類型應與形式參數一致,賦值時多個參數之間的先後對應關係不變。
/* Note:Your choice is C IDE */ #include "stdio.h" #include "stdlib.h" #include "windows.h" int i,j; void gotoxy(int x,int y); int color(int c); void xin(){ color(12); gotoxy(28,8); printf("■");//8行28列 Sleep(500); gotoxy(26,7); printf("■"); Sleep(500); gotoxy(24,6); printf("■"); Sleep(500); gotoxy(22,6); printf("■"); Sleep(500); gotoxy(20,7); printf("■"); Sleep(500); gotoxy(20,8); printf("■"); Sleep(500); gotoxy(20,9); printf("■"); Sleep(500); gotoxy(22,10); printf("■"); Sleep(500); gotoxy(24,11); printf("■"); Sleep(500); gotoxy(26,12); printf("■"); Sleep(500); gotoxy(28,13); printf("■"); Sleep(500); gotoxy(30,12); printf("■"); Sleep(500); gotoxy(32,11); printf("■"); Sleep(500); gotoxy(34,10); printf("■"); Sleep(500); gotoxy(36,9); printf("■"); Sleep(500); gotoxy(36,8); printf("■"); Sleep(500); gotoxy(36,7); printf("■"); Sleep(500); gotoxy(34,6); printf("■"); Sleep(500); gotoxy(32,6); printf("■"); Sleep(500); gotoxy(30,7); printf("■"); for(i=7;i<10;i++){ gotoxy(22,i); printf("■"); } for(i=7;i<11;i++){ gotoxy(24,i); printf("■"); } for(i=8;i<12;i++){ gotoxy(26,i); printf("■"); } for(i=9;i<13;i++){ gotoxy(28,i); printf("■"); } for(i=7;i<10;i++){ gotoxy(34,i); printf("■"); } for(i=7;i<11;i++){ gotoxy(32,i); printf("■"); } for(i=8;i<12;i++){ gotoxy(30,i); printf("■"); } } void menu(){ for(i=0;i<58;i+=2){ gotoxy(i,1); color(5); printf("□"); gotoxy(i,26); printf("□"); } for(i=0;i<26;i++){ gotoxy(0,i); printf("□"); gotoxy(56,i); printf("□"); } for(i=2;i<56;i+=2){ for(j=2;j<26;j++){ gotoxy(i,j); color(3); printf("■"); } } } void people(){ color(12); for(i=12;i<16;i++){ gotoxy(6,i); printf("■"); } gotoxy(8,12); printf("■"); gotoxy(4,12); printf("■"); gotoxy(8,15); printf("■"); gotoxy(4,15); printf("■"); gotoxy(14,16); printf("■"); gotoxy(14,15); printf("■"); gotoxy(16,14); printf("■"); gotoxy(18,15); printf("■"); gotoxy(18,16); printf("■"); gotoxy(16,17); printf("■"); gotoxy(18,17); printf("■"); gotoxy(14,17); printf("■"); gotoxy(18,14); printf("■"); gotoxy(14,14); printf("■"); gotoxy(26,16); printf("■"); gotoxy(26,17); printf("■"); gotoxy(28,18); printf("■"); gotoxy(30,17); printf("■"); gotoxy(30,16); printf("■"); /*gotoxy(36,13); printf("■");*/ gotoxy(38,13); printf("■"); gotoxy(36,14); printf("■"); gotoxy(40,14); printf("■"); gotoxy(40,15); printf("■"); gotoxy(38,15); printf("■"); gotoxy(36,15); printf("■"); gotoxy(36,16); printf("■"); /*gotoxy(36,17); printf("■");*/ gotoxy(38,17); printf("■"); gotoxy(40,17); printf("■"); //y gotoxy(46,15); printf("■"); gotoxy(46,14); printf("■"); gotoxy(48,15); printf("■"); gotoxy(50,15); printf("■"); gotoxy(50,14); printf("■"); gotoxy(50,16); printf("■"); gotoxy(50,17); printf("■"); gotoxy(46,17); printf("■"); gotoxy(48,17); printf("■"); } void gotoxy(int x,int y){ COORD c; c.X=x; c.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c); } int color(int c){ SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),c); return 0; } void main() { system ( "mode con cols=60 lines=28" ); system("title 原來是由於"); menu(); gotoxy(28,0); system("pause"); xin(); for(i=24;i>=13;i--){ Sleep(300); gotoxy(28,i); color(12); printf("■"); gotoxy(28,i+1); color(3); printf("■"); } /*system("cls");*/ /*menu();*/ people(); gotoxy(10,0); system("pause"); }