最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1. 函數(shù)的概念

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

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

2. 函數(shù)的分類

從定義角度分

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

從參數(shù)角度分類

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

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

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

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

從返回值角度分

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

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

3. 函數(shù)的定義

定義方法:

格式如下

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

//函數(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)識符,所以要滿足標(biāo)識符的命名規(guī)則

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

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

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

4. 函數(shù)的聲明

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

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

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

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

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

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

聲明的方式

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

#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ù)在不同一個.c文件中的時候:

一定要聲明?。。?/p>

聲明的方式

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

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

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

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

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

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

#include<stdio.h>
int sum(int a,int b){    // 定義帶返回值的函數(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í)參,定義一個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)用會在計算機(jī)里同時存在多個,其中最后一個是當(dāng)前正在工作的那個。

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

編寫原則

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

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

參考《C語言中的遞歸》

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

相關(guān)文章

  • C++連接mysql的方法(直接調(diào)用C-API)

    C++連接mysql的方法(直接調(diào)用C-API)

    首先安裝mysql,點(diǎn)完全安裝,才能在在安裝目錄include找到相應(yīng)的頭文件,注意,是完全安裝,需要的朋友可以參考下
    2017-06-06
  • C++中命名空間(namespace)詳解及其作用介紹

    C++中命名空間(namespace)詳解及其作用介紹

    考慮一種情況,當(dāng)我們有兩個同名的人,Zara,在同一個班里。當(dāng)我們需要對它們進(jìn)行區(qū)分我們必須使用一些額外的信息和它們的名字,比如它們生活在不同的區(qū)域或者興趣愛好什么的,在C++程序中也會遇到同樣的情況,所以命名空間就此產(chǎn)生
    2022-08-08
  • 詳談全排列next_permutation() 函數(shù)的用法(推薦)

    詳談全排列next_permutation() 函數(shù)的用法(推薦)

    下面小編就為大家?guī)硪黄斦勅帕衝ext_permutation() 函數(shù)的用法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • C++ 手把手教你實(shí)現(xiàn)可變長的數(shù)組實(shí)現(xiàn)

    C++ 手把手教你實(shí)現(xiàn)可變長的數(shù)組實(shí)現(xiàn)

    這篇文章主要介紹了C++ 手把手教你實(shí)現(xiàn)可變長的數(shù)組實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 基于Matlab實(shí)現(xiàn)有雪花飄落的圣誕樹的繪制

    基于Matlab實(shí)現(xiàn)有雪花飄落的圣誕樹的繪制

    圣誕節(jié)快到了(雖然還有十天),一起來用MATLAB畫個簡單圣誕樹叭~代碼幾乎取消了全部的循環(huán),因此至少需要17b之后的版本,僅存的循環(huán)用來讓樹旋轉(zhuǎn)起來,讓雪花飄落起來,讓樹頂上的星光搖曳起來~感興趣的可以試一試
    2022-12-12
  • 微軟Detours Hook庫編譯與使用教程

    微軟Detours Hook庫編譯與使用教程

    Detours 是一個兼容多個Windows系列操作系統(tǒng)版本(包括 Windows XP 到 Windows 11)的工具庫,Detours 是微軟開發(fā)的一個強(qiáng)大的Windows API鉤子庫,用于監(jiān)視和攔截函數(shù)調(diào)用,這篇文章給大家介紹微軟Detours Hook庫編譯與使用,感興趣的朋友一起看看吧
    2024-08-08
  • C/C++實(shí)現(xiàn)八大排序算法匯總

    C/C++實(shí)現(xiàn)八大排序算法匯總

    這篇文章主要為大家詳細(xì)介紹了C/C++實(shí)現(xiàn)八大排序算法匯總,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • c++代碼調(diào)試方式的幾點(diǎn)建議

    c++代碼調(diào)試方式的幾點(diǎn)建議

    這篇文章主要介紹了c++代碼調(diào)試方式的幾點(diǎn)建議,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08
  • Qt音視頻開發(fā)之利用ffmpeg實(shí)現(xiàn)倍速播放

    Qt音視頻開發(fā)之利用ffmpeg實(shí)現(xiàn)倍速播放

    這篇文章主要為大家詳細(xì)介紹了在Qt音視頻開發(fā)中如何利用ffmpeg實(shí)現(xiàn)倍速播放功能(半倍速/2倍速/4倍速/8倍速),感興趣的小伙伴可以了解一下
    2022-11-11
  • 零基礎(chǔ)詳解C語言指針進(jìn)階

    零基礎(chǔ)詳解C語言指針進(jìn)階

    在C語言和C++等語言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來指向若干個字符串,使字符串處理更加方便、靈活
    2022-02-02

最新評論

海晏县| 永登县| 东兴市| 巨鹿县| 政和县| 哈尔滨市| 新化县| 新津县| 离岛区| 台北县| 永仁县| 清新县| 谷城县| 嘉祥县| 天长市| 东山县| 黄山市| 永寿县| 毕节市| 利辛县| 林甸县| 达孜县| 阳谷县| 米脂县| 衢州市| 共和县| 金寨县| 新兴县| 壶关县| 理塘县| 大洼县| 洛川县| 孙吴县| 麻城市| 林芝县| 泊头市| 肇东市| 宿松县| 南宁市| 安顺市| 拉萨市|