目錄
- 一.函式簡介
- 1.函式宣告
- 2.函式定義
- 3.函式呼叫
- 4.函式形參和實參
- 二.函式預設引數
- 1.函式全預設引數
- 2.函式半預設引數
- 三.注意事項
- 四.猜你喜歡
零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門
一.函式簡介
1.函式宣告
函式宣告只是一個空殼,不會有具體的函式實作,而定義要實作函式的實作,例如:
int sub(int x,int y); //只需要宣告即可,不需要實作這個函式的功能
2.函式定義
函式的定義需要實作這個函式的功能,例如:
int sub(int x,int y) 需要實作這個函式的功能
{
return (x-y);
}
3.函式呼叫
函式呼叫之前必須宣告或者定義,否則會報錯:找不到識別符號,這也是為什么 hello world 中呼叫 printf 函式必須要包含 stdio.h 頭檔案的原因;
4.函式形參和實參
形參:函式被定義或者宣告時,引數串列都是形參;
//函式被宣告時,引數串列中的x,y都是形參
int sub(int x,int y);
//函式被定義時,引數串列中的x,y都是形參
int sub(int x,int y)
{
return (x-y);
}
實參:函式被呼叫時,傳遞的引數串列都是實參;
int main(void)
{
//sub函式被呼叫,傳遞的引數1,2都是實參
sub(1,2);
return 0;
}
二.函式預設引數
預設引數:在宣告或者定義函式時為函式的引數指定一個默認值,在呼叫函式時,若沒有指定實參則使用默認值,否則使用指定實參;
其中預設引數分為兩類:全預設引數 和 半預設引數;
1.函式全預設引數
函式全預設引數:函式在定義或者宣告時,所有的形參都默認值,舉個例子:
/************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:C語言 函式預設引數
//@Time:2021/06/23 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
/************************************************************************/
#include <stdio.h>
//x,y為函式的形參,如果函式被呼叫時,沒有設定x和y值,x值默認為100,y值默認為5
int sub(int x=100,int y=5)
{
return (x-y);
}
int main(void)
{
int a=20;
int b=10;
//變數a、b為sub函式的實參
printf("sub函式計算結果 = %d\n",sub(a, b));
//注意:我們并沒有為sub函式設定實參,此時默認x=100 y=5
printf("sub函式計算結果 = %d\n",sub());
return 0;
}
/*
輸出:
sub函式計算結果 = 10
sub函式計算結果 = 95
*/
2.函式半預設引數
函式半預設引數:函式在定義或者宣告時,只有一部分形參有默認值,舉個例子:
/************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:C語言 函式預設引數
//@Time:2021/06/23 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
/************************************************************************/
#include <stdio.h>
//x,y為函式的形參,如果函式被呼叫時,沒有設定y值,y值默認為5
int sub(int x,int y=5)
{
return (x-y);
}
int main(void)
{
int a=20;
int b=10;
//變數a、b為sub函式的實參
printf("sub函式計算結果 = %d\n",sub(a, b));
//注意:我們并沒有為sub函式第二個引數設定實參,此時默認y=5
printf("sub函式計算結果 = %d\n",sub(a));
return 0;
}
/*
輸出:
sub函式計算結果 = 10
sub函式計算結果 = 15
*/
三.注意事項
1.引數給預設值只能從右往左給定(即:有默認值的形參必須放在最后),例如:
void Funtest(int a ,int b;int c=30)*可以
void Funtest(int a =10,int b;int c)*不行
void Funtest(int a =10,int b;int c=30)*不行
2.預設值必須是常量或者全域變數
四.猜你喜歡
- C 語言邏輯運算子
- C 語言三目運算子
- C 語言逗號運算式
- C 語言 sizeof 和 strlen 函式區別
- C 語言 strcpy 和 strcpy_s 函式區別
- C 語言 memcpy 和 memcpy_s 區別
- C 語言 陣列定義和使用
- C 語言 陣列遍歷
- C 語言 陣列下標越界
- C 語言 陣列記憶體溢位
- C 語言 陣列下標越界和記憶體溢位區別
- C 語言 二維陣列定義和使用
- C 語言 二維陣列行數和列數計算
- C 語言 指標宣告和定義
- C 語言 指標 p++ / p–
- C 語言 p++/§++/_(p++)/_p++
- C 語言 使用指標遍歷陣列
- C 語言 指標和陣列區別
- C 語言 陣列指標
- C 語言 指標陣列
- C 語言 指標陣列和陣列指標區別
- C 語言 空指標 NULL
- C 語言 void 指標
- C 語言 野指標
- C 語言 函式宣告和定義
- C 語言 函式宣告和呼叫
- C 語言 函式值傳遞和址傳遞
- C 語言 函式預設引數
未經允許不得轉載:猿說編程 ? C 語言 函式預設引數
本文由博客 - 猿說編程 猿說編程 發布!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/295951.html
標籤:C
