c語言學習之基礎知識點介紹(八):函數的基本用法


本節開始說函數。

一、函數的基本用法 

/*
作用:可以實現代碼的復用,在一定程度上解決代碼冗余的問題;方便后期維護。
語法:
  void  函數名(){
         函數體;
  }
函數命名要有意義,遵守駝峰命名法。起名要有意義,要做到看到函數名就知道函數體有什么作用。
*/
//例如:
void printfMsg(){
   printf("哈哈哈哈。");
}

int main(int argc,const char * argv[]){
      printfMsg();
      return  0 ;
}

 

 二、帶參數的函數

/*
帶一個參數的函數:
         語法:
               void  函數名(類型  形參名){
                         函數體;
               }
*/
//例如:
void printfNumber(int num){
   printf("傳入的參數為:%d \n",num);
}

int main(int argc , const char * argc[]){
       printfNumber(30);
       return 0;
}

/*
帶多個參數的函數: 
     語法:
              void  函數名(類型  形參名1,類型  形參名2){
                         函數體;
               }
*/
//例如:
void printfNumber(int num1,int num2){
   printf(" %d * %d = %d  \n",num1,num2,num1*num2);
}

int main(int argc , const char * argc[]){
       printfNumber(30,10);
       return 0;
}
/*傳多個以此類推。*/

 

注意:1、函數如果有參數,調用該方法的時候,必須按照對應的順序和個數給它傳參數,否則會報錯。

          2、函數的形參相當於在函數內部定義的局部變量,所以就不能在該方法中定義同名變量。

          3、調用函數的時候,給它傳遞參數,就相當於給形參賦值,如果形參和傳參都是基本數據類型,當類型不匹配的時候,會發生強制轉換。

引出兩個概念。

       形參:函數內定義的變量。

       實參:調用函數時傳過去的值。

注意:當函數的參數是基本數據類型的時候,在函數里改變了形參的值,不會影響到實參。 

三、帶返回值的函數

/*
比如:寫一個函數來計算兩個數字的加減乘除的結果,直接在函數中輸出,這樣做有點不太合適,也有點怪怪的,所以就需要函數給我們一個返回值。
語法:
 返回值類型  函數名(參數列表){
     函數體;
     return 返回值;
 }
注意:1、如果函數有返回值,可以選擇接收和不接收,不會影響函數的執行。
            2、如果返回值是基本數據類型,在接收的時候,可以使用其他基本數據類型的變量來接收,但是會發生強制轉換,所以不推薦這樣做。
            3、在基本數據類型中,返回值的類型可以和函數定下的返回值類型不同,但是也會發生強制轉換,不推薦這樣做。
            4、如果 函數需要返回值,必須保證每條分支都有返回值。
*/
//例如:
int addNum(int num1 ,int num2){
    int result = num1+num2;
    return result;
}
int  isONum(int num ){
      if(num%2==0){
         return num;
      }else if(num %2 >0){
         return num;
      }else{  //如果不加一個else的話,程序會報錯,程序不會分析你的邏輯。
         return num;
      }
}
int main (int argc ,const char * argc[]){
      int result= addNum(10,14);
      printf("兩數之和為:%d \n",result);
      return 0;
}

 

上面用到了return關鍵字,這里來介紹下return

/*
return:
      1、 在有返回值的函數里,return可以幫值返回出去。
       2、如果函數沒有返回值,也可以用return,但是return后面不能帶值,否則會報錯。
       3、可以結束循環。
作用:結束函數。
*/

四、函數的注意事項

/*
1、函數內部不可以定義其他函數,但是可以聲明。
2、函數可以調用其他的函數。
3、函數不允許重名。
4、編譯器是自上而下編譯的,所以在調用自定義函數時,需要把自定義函數寫在main函數上方,如果想寫在下面,則需要先聲明。

聲明的注意事項:
       1、函數的聲明可以卸載任意位置,但是必須要在調用該函數之前。
       2、函數的聲明可以寫n個。
       3、聲明函數的時候,形參名可以省略。
       4、函數返回值是int時,可以不用聲明(僅限mac),所以推薦任何函數,都先聲明。
       5、聲明函數的時候,最好和原函數頭一樣,推薦直接復制函數頭,刪掉大括號加上分號就可以了。。
*/
//例如:
int main(int argc,const char * argv[]){
     void test();//這句話是告訴編譯器,我有這個方法,只不過在下面了。這樣編譯器就不報錯,當然你下面沒有這個函數編譯器也不會報錯。
     test();
     void test1(int );
     test1(10);
     return 0;
}
void test(){
  printf("咩哈哈哈");
}
void test1(int Num){
  printf("咩哈哈哈");
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM