c語言進階2-變量的做用域與無參函數

1、       什麼是函數

函數是具備特定功能的模塊。能夠說一個完整的程序實際上是由多個函數共同完成的。C語言的所有工做都是由程式各樣的函數完成的,因此也把C語言稱爲函數式語言。使用模塊化設計可能 使程序的層次結構清晰,全球程序的編寫、閱讀、調試。windows

2、       函數的分類

就像你同樣,說你從性別的角度分屬於男仍是女?若是從膚色的角度分你是屬於黃種人仍是白種人?若是從高低的角度分你是屬於高的,仍是低的呢?因此說同一類事物能夠從不一樣的角度進行分類。函數也是同樣從定義的角度分爲庫函數和自定義函數、從傳遞參數的角度分爲有參函數與無參函數、從返回值的角度分爲有返回值函數與無返回值函數。各類函數的區分請參照以下:模塊化

  1. 1.   庫函數:系統已經定義好的函數,能夠直接使用。如strlen,strcmp
  2. 2.   自定義函數:根據須要手動所寫的函數。
  3. 3.   有參函數:函數頭後的括號裏有內容的函數。
  4. 4.   無參函數:函數頭後括號裏無內容的函數。
  5. 5.   返回值函數:函數最後有return語句的函數。
  6. 6.   無返回值函數:函數裏沒有return語句的函數。

3、       變量的應用

變量的有效做用範圍稱爲變量的做用域。按照有效做用範圍能夠把變量分爲全局變量和局部變量兩種。函數

  1. 1.   全局變量

全局變量是在函數外部定義的變量,也稱全程變量,或外部變量。全局變量的做用域是從變量定義的位置開始,到所在源文件結束。全局變量的操做範圍,屬於其定義所在的源程序文件中。以下圖所示:spa

 

如上圖所示a、b、x、y、m、n這六個變量做用不一樣,因此若是用全局變量,那麼咱們最好使用a、b這兩個變量定義時的方法,寫在全部函數的上頭。設計

  1. 2.   局部變量

局部變量也稱爲內部變量,指在函數內部定義的變量。或一對花括號「{}」裏的變量,只在其定義的範圍內起做用,範圍以外沒法訪問。調試

舉例:code

void fun(int a,int b)          

{ 

int x,y;

}

 

其中變量a、b、x、y都是局部變量,做用範圍就是函數fun內。blog

4、       函數思惟

經過下面程序段咱們來看下函數思惟的過程,以及函數的定義和使用過程。內存

/* 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:傳遞時個數要一致,類型要一致

  1. 1.   函數的說明

在全局上自定義函數應該在主函數以前有一個說明,目的是告訴系統在主函數中要用到一個自定義函數,被主函數直接調用或間接調用。說明的時候就要寫清楚這個函數的數據類型是什麼,自變量有幾個,都是什麼數據類型的。

如:語句  void check(int a);

聲明方式是:函數頭+;

  1. 2.   無參無返回值函數的定義

函數的定義的格式爲:

void  函數名( )

{

    說明部分;

    語句部分;

}

 

  1. 3.   函數的調用

無參無返回函數的調用格式是經過函數名來調用的.

無參函數的調用格式爲:函數名();

  1. 4.   擴展內容:形式參數和實在參數

針對案例當中須要咱們理解形式參數與實在參數說明以下:

(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");
}
相關文章
相關標籤/搜索