亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解C語言之函數(shù)

 更新時(shí)間:2021年11月12日 08:45:03   作者:LLeavee  
本文是小結(jié)了一下C語言的函數(shù)語法,詳細(xì)介紹了C語言函數(shù)語法的概述、函數(shù)的定義、函數(shù)的返回值、函數(shù)調(diào)用等7個(gè)方面的內(nèi)容,非常詳細(xì),這里推薦給小伙伴們

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

函數(shù)調(diào)用方式

  • 函數(shù)語句調(diào)用
  • 函數(shù)表達(dá)式調(diào)用
  • 函數(shù)參數(shù)調(diào)用

sum(); //函數(shù)語句調(diào)用

result = average * sum(a); //函數(shù)表達(dá)式調(diào)用

此時(shí)函數(shù)名出現(xiàn)在表達(dá)式中,其返回值將作為表達(dá)式的算數(shù)參與計(jì)算。

result = sum(sum1(a)); //函數(shù)參數(shù)調(diào)用

此時(shí)函數(shù)名出現(xiàn)在另一個(gè)函數(shù)的參數(shù)中,其返回值將作為實(shí)參賦值給外函數(shù)的形參。

函數(shù)嵌套調(diào)用

首先在C語言中不允許函數(shù)嵌套定義,也就是不許在一個(gè)函數(shù)內(nèi)定義一個(gè)新函數(shù)。

但是C語言允許函數(shù)嵌套調(diào)用。

void a()
{
        printf("sth");
}
void b()
{
        printf("sth2");
        a();
}

遞歸調(diào)用

C語言的函數(shù)都支持遞歸,也就是說,每個(gè)函數(shù)都可以直接或間接地調(diào)用自己。

遞歸實(shí)現(xiàn)的原因是函數(shù)的每個(gè)執(zhí)行過程在棧中都有自己的形參和局部變量的副本,這些副本相對獨(dú)立。

假定某個(gè)函數(shù)調(diào)用了一個(gè)被調(diào)用的函數(shù),再假定被調(diào)用的函數(shù)反過來調(diào)用了調(diào)用函數(shù),那么第二個(gè)函數(shù)就稱為調(diào)用函數(shù)的遞歸。

使用函數(shù)的遞歸需要兩個(gè)先決條件,即遞推關(guān)系和結(jié)束條件。

寫個(gè)簡單的函數(shù)遞歸:

#include<stdio.h>
void number(int a)
{
	int num = a;
	printf("輸入一個(gè)正數(shù):");
	scanf("%d",&num);
	if(num <= 0)
	{
		number(num);
	}
	else
	{
		printf("這個(gè)正數(shù)是:%d",num);
	}
} 
int main()
{
	int a; 
	number(a);
	return 0;
}

內(nèi)部函數(shù)與外部函數(shù)

函數(shù)是C語言程序中的最小實(shí)現(xiàn)單位,我們可以把一個(gè)函數(shù)或者多個(gè)函數(shù)保存為一個(gè)文件,這個(gè)文件被稱為源文件。

我們在定義一個(gè)函數(shù)后,該函數(shù)便可被其他函數(shù)所調(diào)用。

但當(dāng)一個(gè)源程序由多個(gè)源文件組成時(shí),我們可以指定函數(shù)不能被其他文件調(diào)用,這時(shí)C語言的函數(shù)便分為兩大類,內(nèi)部函數(shù)與外部函數(shù)。

內(nèi)部函數(shù)

當(dāng)某一個(gè)函數(shù)只能被其所在源文件調(diào)用時(shí),他便被稱為內(nèi)部函數(shù),也叫做靜態(tài)函數(shù)。

當(dāng)一個(gè)函數(shù)是內(nèi)部函數(shù)時(shí),他便只局限與其所在源文件中,其他源文件就可以有同名函數(shù),并且他們之間互不干擾。

static關(guān)鍵字可以將原來的函數(shù)修飾成普通函數(shù)。

static 返回值類型 函數(shù)名(參數(shù)列表)

static int number(int a)

外部函數(shù)

與內(nèi)部函數(shù)相反,外部函數(shù)是可以被其他源文件調(diào)用的。

外部函數(shù)使用extern關(guān)鍵字進(jìn)行修飾。

一般來說,定義函數(shù)時(shí)如果沒有使用extern關(guān)鍵字,則將默認(rèn)該函數(shù)為默認(rèn)函數(shù),換言之,extern可以省略。

extern 返回值類型 函數(shù)名(參數(shù)列表)

extern in number(int a)

局部變量與全局變量

“作用域”:他決定了程序中哪些語句可用哪些不可用,換言之,就是程序的可見性。作用域包括局部作用域和全局作用域。

局部變量具有局部作用域,全局變量具有全局作用域。

局部變量

在一個(gè)函數(shù)內(nèi)定義的變量稱為局部變量,我們使用的大多數(shù)變量都是局部變量,這些變量的聲明在函數(shù)內(nèi)部,無法被其他函數(shù)使用。

函數(shù)的形式參數(shù)也屬于局部變量,只作用于函數(shù)內(nèi)的所有語句塊。

一般來說,一個(gè)局部變量的作用域可以由包含該變量的一對大括號所決定。

全局變量

與局部變量相對,在函數(shù)外部進(jìn)行聲明定義的變量,稱為全局變量。

全局變量不屬于某一個(gè)函數(shù),而屬于整個(gè)源文件。如果要在其他文件中使用該變量,則需先用extern關(guān)鍵字進(jìn)行引用修飾。

全局變量的作用是增加函數(shù)間數(shù)據(jù)聯(lián)系的通道。如果在一個(gè)函數(shù)中改變了全局變量的值,就能影響到其他函數(shù),這便打通了不同函數(shù)之間的通道。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • C++中的三種繼承public,protected,private詳細(xì)解析

    C++中的三種繼承public,protected,private詳細(xì)解析

    我們已經(jīng)知道,在基類以private方式被繼承時(shí),其public和protected成員在子類中變?yōu)閜rivate成員。然而某些情況下,需要在子類中將一個(gè)或多個(gè)繼承的成員恢復(fù)其在基類中的訪問權(quán)限
    2013-09-09
  • C++編程中刪除運(yùn)算符與相等運(yùn)算符的使用解析

    C++編程中刪除運(yùn)算符與相等運(yùn)算符的使用解析

    這篇文章主要介紹了C++編程中刪除運(yùn)算符與相等運(yùn)算符的使用解析,delete和==以及!=運(yùn)算符的使用是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-01-01
  • C++多繼承多態(tài)的實(shí)例詳解

    C++多繼承多態(tài)的實(shí)例詳解

    這篇文章主要介紹了C++多繼承多態(tài)的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C語言實(shí)現(xiàn)俄羅斯方塊

    C語言實(shí)現(xiàn)俄羅斯方塊

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)俄羅斯方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C語言中的內(nèi)存管理詳情

    C語言中的內(nèi)存管理詳情

    這篇文章主要介紹了C語言中的內(nèi)存管理詳情,手工申請內(nèi)存使用malloc展開全文內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • C++?qsort函數(shù)排序與冒泡模擬實(shí)現(xiàn)流程詳解

    C++?qsort函數(shù)排序與冒泡模擬實(shí)現(xiàn)流程詳解

    qsort是一個(gè)庫函數(shù),基于快速排序算法實(shí)現(xiàn)的一個(gè)排序的函數(shù),下面這篇文章主要給大家介紹了關(guān)于C語言qsort()函數(shù)使用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • VScode中使用Cmake遇到的問題及其解決方法(推薦)

    VScode中使用Cmake遇到的問題及其解決方法(推薦)

    這篇文章主要介紹了VScode中使用Cmake遇到的問題及其解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • C++中rapidjson將map轉(zhuǎn)為json的方法

    C++中rapidjson將map轉(zhuǎn)為json的方法

    今天小編就為大家分享一篇關(guān)于C++中rapidjson將map轉(zhuǎn)為json的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 如何在C++中調(diào)用python代碼你知道嗎

    如何在C++中調(diào)用python代碼你知道嗎

    這篇文章主要為大家介紹了C++中調(diào)用python代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • C語言實(shí)現(xiàn)三子棋小游戲全程詳解

    C語言實(shí)現(xiàn)三子棋小游戲全程詳解

    完成一個(gè)三子棋的代碼并不是很難,有困難且重要的是完成這個(gè)游戲代碼所具備的思想,因?yàn)樗枷肷系倪M(jìn)步才是真正的進(jìn)步,當(dāng)我們有了這個(gè)思想上的武器,寫出別的代碼,難度就不會(huì)高
    2022-05-05

最新評論