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

詳解C語言之函數

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

函數的調用

函數調用方式

  • 函數語句調用
  • 函數表達式調用
  • 函數參數調用

sum(); //函數語句調用

result = average * sum(a); //函數表達式調用

此時函數名出現在表達式中,其返回值將作為表達式的算數參與計算。

result = sum(sum1(a)); //函數參數調用

此時函數名出現在另一個函數的參數中,其返回值將作為實參賦值給外函數的形參。

函數嵌套調用

首先在C語言中不允許函數嵌套定義,也就是不許在一個函數內定義一個新函數。

但是C語言允許函數嵌套調用。

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

遞歸調用

C語言的函數都支持遞歸,也就是說,每個函數都可以直接或間接地調用自己。

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

假定某個函數調用了一個被調用的函數,再假定被調用的函數反過來調用了調用函數,那么第二個函數就稱為調用函數的遞歸。

使用函數的遞歸需要兩個先決條件,即遞推關系和結束條件。

寫個簡單的函數遞歸:

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

內部函數與外部函數

函數是C語言程序中的最小實現單位,我們可以把一個函數或者多個函數保存為一個文件,這個文件被稱為源文件。

我們在定義一個函數后,該函數便可被其他函數所調用。

但當一個源程序由多個源文件組成時,我們可以指定函數不能被其他文件調用,這時C語言的函數便分為兩大類,內部函數與外部函數。

內部函數

當某一個函數只能被其所在源文件調用時,他便被稱為內部函數,也叫做靜態(tài)函數。

當一個函數是內部函數時,他便只局限與其所在源文件中,其他源文件就可以有同名函數,并且他們之間互不干擾。

static關鍵字可以將原來的函數修飾成普通函數。

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

static int number(int a)

外部函數

與內部函數相反,外部函數是可以被其他源文件調用的。

外部函數使用extern關鍵字進行修飾。

一般來說,定義函數時如果沒有使用extern關鍵字,則將默認該函數為默認函數,換言之,extern可以省略。

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

extern in number(int a)

局部變量與全局變量

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

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

局部變量

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

函數的形式參數也屬于局部變量,只作用于函數內的所有語句塊。

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

全局變量

與局部變量相對,在函數外部進行聲明定義的變量,稱為全局變量。

全局變量不屬于某一個函數,而屬于整個源文件。如果要在其他文件中使用該變量,則需先用extern關鍵字進行引用修飾。

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

總結

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

相關文章

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

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

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

    C++編程中刪除運算符與相等運算符的使用解析

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

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

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

    C語言實現俄羅斯方塊

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

    C語言中的內存管理詳情

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

    C++?qsort函數排序與冒泡模擬實現流程詳解

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

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

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

    C++中rapidjson將map轉為json的方法

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

    如何在C++中調用python代碼你知道嗎

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

    C語言實現三子棋小游戲全程詳解

    完成一個三子棋的代碼并不是很難,有困難且重要的是完成這個游戲代碼所具備的思想,因為思想上的進步才是真正的進步,當我們有了這個思想上的武器,寫出別的代碼,難度就不會高
    2022-05-05

最新評論