欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言深入了解函數(shù)

 更新時(shí)間:2022年05月09日 15:13:55   作者:龜π氣功  
C語言函數(shù)是用來模塊化構(gòu)建程序的。如果你的功能少,你可以全都寫在mian函數(shù)中,但是當(dāng)實(shí)現(xiàn)功能多的時(shí)候,如果全寫在main的函數(shù)里,不僅代碼不美觀,而且函數(shù)實(shí)現(xiàn)的時(shí)候結(jié)構(gòu)復(fù)雜,代碼重復(fù)

1. 函數(shù)的概念

函數(shù)是c語言的功能單位,實(shí)現(xiàn)一個(gè)功能可以封裝一個(gè)函數(shù)來實(shí)現(xiàn)。

定義函數(shù)的時(shí)候一切以功能為目的,根據(jù)功能去定函數(shù)的參數(shù)和返回值。 函數(shù)就是將特定功能的代碼封裝在一個(gè)函數(shù)內(nèi)部,當(dāng)使用這些代碼時(shí),只需要調(diào)用函數(shù)即可。

2. 函數(shù)的分類

從定義角度分

  • 庫函數(shù)(即函數(shù)是誰實(shí)現(xiàn)的)
  • 自定義函數(shù)
  • 系統(tǒng)調(diào)用(操作系統(tǒng)實(shí)現(xiàn)的函數(shù))

從參數(shù)角度分類

有參函數(shù):函數(shù)有一個(gè)或多個(gè)形參(參數(shù)類型隨便)

int fun(int a ,float b,double c){ }

無參函數(shù):函數(shù)沒有參數(shù),在形參列表的位置寫void或什么都不寫

int fun(void) { }或 int fun( ){ }

從返回值角度分

帶返回值的函數(shù):在定義函數(shù)的時(shí)候,必須帶著返回值類型,在函數(shù)體里,必須有return,如果沒有返回值類型,默認(rèn)返回整型。

無返回值函數(shù):函數(shù)名前加void,return可以寫也可以不寫,寫的時(shí)候后面加一個(gè)分號(hào)即return;

3. 函數(shù)的定義

定義方法:

格式如下

返回值類型 函數(shù)名字(形參列表,用逗號(hào)分隔開) {

//函數(shù)體,函數(shù)的功能在函數(shù)體里實(shí)現(xiàn)

}

int max(int a,int b)
{
 int z;
 if (x>y){
	z = x;
	}
 else{
	z = y;
	}
 return z;
}

注意:函數(shù)名字是標(biāo)識(shí)符,所以要滿足標(biāo)識(shí)符的命名規(guī)則

return 后面跟的變量類型必須與函數(shù)名左邊的類型一致

在一個(gè)程序中,相同的函數(shù)名只能出現(xiàn)依次

#include<stdio.h>
// 定義一個(gè)沒有參數(shù)也沒有返回值的函數(shù)
void myfunc1(){
    printf("哇哦哇哦\n");
    return ;
}
//定義一個(gè)無返回值,有參數(shù)的函數(shù)
void myfunc2(int a,int b){
    int sum;
    sum = a + b;    
    printf("%d + %d = %d\n",a,b,sum);
}
//定義一個(gè)有返回值,有參數(shù)的函數(shù)
int myfunc3(int a,int b){
    int sum;
    sum = a + b;
    return sum;
}
int main(){
    // 調(diào)用函數(shù)myfunc1
    // 調(diào)用的時(shí)候不用加返回值類型
    myfunc1();
    return 0;
}

4. 函數(shù)的聲明

概念:對已經(jīng)定義的函數(shù),進(jìn)行說明,函數(shù)可以多次聲明

為什么要進(jìn)行聲明? 有些情況下,如果不對函數(shù)進(jìn)行聲明,編譯器在編譯的時(shí)候,可能不認(rèn)識(shí)這個(gè)函數(shù),因?yàn)榫幾g器在編譯c程序的時(shí)候,是從上往下編譯的。

  • 主調(diào)函數(shù)和被調(diào)函數(shù)在同一個(gè).c文件中的時(shí)候:

(1)被調(diào)函數(shù)在上,主調(diào)函數(shù)在下,不需要聲明,即下面的函數(shù)可以調(diào)用上面的函數(shù)

(2)被調(diào)函數(shù)在下,主調(diào)函數(shù)在上,需要聲明。

對于一些高級(jí)的編譯器,不用聲明也能調(diào)用函數(shù),但是會(huì)彈出很多warning。

聲明的方式

1.直接聲明法:將被調(diào)用的函數(shù)的定義拷貝過去,后面加分號(hào),如下例:

#include<stdio.h>
void myfunc1();  // 直接聲明
int main(){
    myfunc1();
    return 0;
}
void myfunc1(){
    printf("哇哦哇哦\n");
    return ;
}

2.間接聲明:將函數(shù)的聲明放在頭文件中, .c程序包含頭文件即可(例子待補(bǔ)充…)

  • 主調(diào)函數(shù)和被調(diào)函數(shù)在不同一個(gè).c文件中的時(shí)候:

一定要聲明?。?!

聲明的方式

1.直接聲明:將被調(diào)用的函數(shù)的定義拷貝過去,后面加分號(hào),前面加 extern

2.間接聲明:將函數(shù)的聲明放在頭文件中, .c程序包含頭文件即可

5. 函數(shù)的調(diào)用

變量=函數(shù)名(實(shí)參列表); // 帶返回值的

函數(shù)名(實(shí)參列表); // 不帶返回值的

推薦閱讀:《形參和實(shí)參的區(qū)別》

#include<stdio.h>
int sum(int a,int b){    // 定義帶返回值的函數(shù),定義的時(shí)候是形參
    int sum = a + b;
    return sum;
}
void func(){
    printf("我是無返回值函數(shù)!\n");
    printf("我是老六~\n");
    return; 
}
int main(){
    int re = sum(1,2);    // 調(diào)用帶返回值的函數(shù),調(diào)用的時(shí)候是實(shí)參,定義一個(gè)int類型的變量re來接收sum函數(shù)返回的結(jié)果
    printf("結(jié)果是:%d\n",re);
    func();   // 調(diào)用無返回值函數(shù)
    return 0;
}

6. 遞歸函數(shù)

自己調(diào)用自己的函數(shù)叫做遞歸函數(shù)

遞歸函數(shù)調(diào)用會(huì)在計(jì)算機(jī)里同時(shí)存在多個(gè),其中最后一個(gè)是當(dāng)前正在工作的那個(gè)。

一個(gè)非常復(fù)雜的問題,如果可以拆分成多個(gè)小問題,其中至少有一個(gè)小問題和原來的問題本質(zhì)上一樣,只是規(guī)模小一些,就可以采用遞歸來解決。

編寫原則

首先要在遞歸函數(shù)中編寫語句描述問題的拆分方式

在遞歸函數(shù)的開始編寫分支解決不再拆分的情況(這種情況必須保證程序可以結(jié)束)

參考《C語言中的遞歸》

到此這篇關(guān)于C語言深入了解函數(shù)的文章就介紹到這了,更多相關(guān)C語言函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)鏈表去重的實(shí)例

    C語言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)鏈表去重的實(shí)例

    這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)鏈表去重的實(shí)例的相關(guān)資料,這里提供了題目及實(shí)例代碼,需要的朋友可以參考下
    2017-07-07
  • C++接口文件小技巧之PIMPL詳解

    C++接口文件小技巧之PIMPL詳解

    C++ 里面有一些慣用法(idioms),如 RAII,PIMPL,copy-swap、CRTP、SFINAE 等,今天要說的是 PIMPL,即 Pointer To Implementation,指向?qū)崿F(xiàn)的指針,感興趣的可以了解一下
    2023-06-06
  • 人臉檢測中AdaBoost算法詳解

    人臉檢測中AdaBoost算法詳解

    這篇文章主要為大家詳細(xì)介紹了人臉檢測中AdaBoost算法的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C語言編程內(nèi)存分配通訊錄靜態(tài)實(shí)現(xiàn)示例代碼教程

    C語言編程內(nèi)存分配通訊錄靜態(tài)實(shí)現(xiàn)示例代碼教程

    這篇文章主要為大家介紹了C語言編程實(shí)現(xiàn)靜態(tài)的通訊錄示例代碼教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-10-10
  • 詳解C語言中動(dòng)態(tài)內(nèi)存管理

    詳解C語言中動(dòng)態(tài)內(nèi)存管理

    這篇文章主要為大家詳細(xì)介紹了C語言中動(dòng)態(tài)內(nèi)存管理的相關(guān)知識(shí),以及常見的動(dòng)態(tài)內(nèi)存的錯(cuò)誤,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-07-07
  • MFC中動(dòng)態(tài)創(chuàng)建控件以及事件響應(yīng)實(shí)現(xiàn)方法

    MFC中動(dòng)態(tài)創(chuàng)建控件以及事件響應(yīng)實(shí)現(xiàn)方法

    這篇文章主要介紹了MFC中動(dòng)態(tài)創(chuàng)建控件以及事件響應(yīng)實(shí)現(xiàn)方法,詳細(xì)講解了MFC中動(dòng)態(tài)創(chuàng)建控件以及事件響應(yīng)的概念與實(shí)現(xiàn)方法,具有一定的實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C++簡單集合類的實(shí)現(xiàn)方法

    C++簡單集合類的實(shí)現(xiàn)方法

    如何使用C++實(shí)現(xiàn)一個(gè)簡單的集合類,這篇文章主要介紹了C++簡單集合類的實(shí)現(xiàn)方法,感興趣的小伙伴們可以參考一下
    2016-07-07
  • C語言指針類型與野指針引起的原因

    C語言指針類型與野指針引起的原因

    我們C語言獨(dú)一無二的特色——指針。說起指針,可能很多人都是還沒學(xué)就已經(jīng)聽說過其鼎鼎大名,因?yàn)橛泻芏鄠餮院屯嫘κ裁吹恼f指針很難,其實(shí)大家大可不必有畏難情緒,指針這個(gè)東西雖然確實(shí)有一定難度,但是這是基于其優(yōu)秀的靈活性而衍生的一點(diǎn)小問題
    2023-02-02
  • C++連接并使用MySQL數(shù)據(jù)庫

    C++連接并使用MySQL數(shù)據(jù)庫

    這篇文章主要為大家詳細(xì)介紹了C++連接并使用MySQL數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C++ virtual destructor虛擬析構(gòu)函數(shù)

    C++ virtual destructor虛擬析構(gòu)函數(shù)

    C++中基類采用virtual虛析構(gòu)函數(shù)是為了防止內(nèi)存泄漏。具體地說,如果派生類中申請了內(nèi)存空間,并在其析構(gòu)函數(shù)中對這些內(nèi)存空間進(jìn)行釋放,今天通過本文給大家介紹C++ virtual destructor虛擬析構(gòu)函數(shù)的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-05-05

最新評(píng)論