當前位置:
首頁 > 知識 > C語言函數 原來可這麼理解

C語言函數 原來可這麼理解


1.C的設計原則是把函數作為程序的構成模塊。


2.函數是完成特定任務的程序代碼的自包含單元。函數一般有兩個功能,執行某些動作;返回一個值以供調用程序使用。


3.使用函數的好處,代碼重複利用;是程序更加模塊化。


4.通常把函數看作黑盒子,對於一定的輸入會產生特定的結果,而不用考慮內部實現,除非是函數的編寫者。這樣看待函數有助於把精力放在程序整體設計而不是具體實現細節。


5.編寫函數需考慮函數要的功能和函數與程序整體上的關係。

6.函數的聲明(ANCI C函數原型),告訴編譯器函數的類型,且需要在其他地方找到該函數的定義。


函數的定義,函數的具體實現,確切的指定了函數的具體功能。


函數的調用,導致該函數被執行。


想要一起學習C 的可以加裙二四八八九四四三零,有很多大神一起學習交流,有資源,然後可以訂閱轉發一下


函數必須先聲明後使用。函數定義在調用之前,可不聲明,函數定義在調用之後或在其他文件中,那麼調用之前必須先聲明。被調用函數聲明可在調用函數之外,也可在調用函數內任何可以放置變數聲明的位置。


7.函數聲明(ANCI C函數原型)


返回值類型 函數名(形參類型1 參數名1,形參類型2 參數名2);)(聲明了函數名,函數返回值類型,函數參數個數和類型)


返回值類型 函數名(形參類型1,形參類型2);(省略參數名)


int prinf(char *, ...);//不確定參數函數的聲明


void aaa(void);//無參數無返回值函數的聲明

int bbb(int m, int n);


int bbb(int, int);


舊式函數聲明:


void aaa();


int bbb();(只需要聲明函數返回值類型,不需要參數信息)


ANCI C函數原型的好處,通知編譯器更多信息,使其在編譯函數調用語句時能檢查更多錯誤。


8.函數定義


返回值類型 函數名(形參類型1 參數名1,形參類型2 參數名2)//函數頭


{


//函數體

}


int bbb(int m, int n)


{


//函數體


}


形式參量(形參)和定義在函數內部的變數一樣,是局部變數,是函數私有的。即時在函數外部使用同名的變數,也不會有任何衝突,它們是同名的,相互獨立的,互不相關的。


舊式函數定義:


int bbb(m , n)


int m,n;


{

//函數體


}


9.函數調用


函數名(實參1, 實參2);


aaa();


bbb(12, 5);


想要一起學習C 的可以加裙二四八八九四四三零,有很多大神一起學習交流,有資源,然後可以訂閱轉發一下


形式參量(形參)是被調用函數中的變數(在函數頭中聲明),實際參數(實參)是調用函數傳遞給被調用函數的形參的特定數值。傳遞是複製操作,就是說被調用函數中對複製數值做的任何操作,都不會影響調用函數中的原數值。


函數調用的時候,將創建形參(局部變數),並將用實參作初始化。


10.使用return語句從函數中返回一個值,並終止函數的執行,將程序控制權交給調用函數的下一條語句。一般是函數體最後一條語句。該值就是函數的返回值,被存儲在一個匿名變數中。因此,函數調用語句可用來賦值和參與運算。

若return返回的值類型與函數定義的返回值類型不一致,會被自動轉換成定義的返回值類型。


函數之間的關係,調用與被調用;函數之間通過參數與返回值進行通信。C中所有函數同等地位,都可以調用其他函數或著被調用。


11.C允許一個函數調用其自身,這種調用過程稱為遞歸。


遞歸原理:


每一級函數都有自己的私有變數;


每一次函數調用都會有一次返回;


函數中,位於遞歸調用前的語句和各級被調用函數擁有相同的執行順序,位於遞歸調用之後的語句與各級被調用函數執行順序相反;


雖然每一級函數都有自己的私有變數,但函數代碼並不會得到複製;


遞歸函數中必須包含可以終止遞歸調用的語句。


尾遞歸,就是把遞歸調用放在函數末尾,return語句之前。尾遞歸的作用相當於循環語句。

遞歸的缺點,會很快佔用大量內存。


12.多源代碼文件的編譯


main函數在一個源文件中,自定義函數在一個源文件中,函數原型和常量定義放在頭文件中。


13.指針


指針就是內存地址,表現為無符號整數,通常是16進位格式。


指針變數(簡稱指針)是存放地址的變數。


指針的聲明:


int * point;//指向一個整數變數的指針,數據類型是int *,*表示point是指針變數,int表示point指向一個整數變數。


char * chr;//指向一個字元變數的指針


float * flt;//指向一個單精度浮點數變數的指針

指針運算符:間接運算符(取值符)*,地址運算符(取地址符)&


&後跟一個變數名,&給出變數的地址,*後跟一個指針變數或地址,*給出存儲在被指向地址中的值。


int a = 10, b;


int * point, * point2;


point = &a;


b = *point;


編寫程序時,變數有三個屬性,變數的名字,類型,數值;編譯載入後,變數有兩個屬性,地址和數值。變數的地址可以看作在計算機中的名稱。


14.指針作為函數的參數


將調用函數變數的指針作為實參傳遞給被調用函數的形參,可以改變調後函數的變數。


不要將被調用函數變數的指針作為返回值傳遞給調用函數,因為局部變數的生命周期在被調用函數執行完就結束了,被釋放了,調用函數後續使用該值回造成錯誤。

想要一起學習C 的可以加裙二四八八九四四三零,有很多大神一起學習交流,有資源,然後可以訂閱轉發一下



C語言函數 原來可這麼理解


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 C加加 的精彩文章:

C語言編程——查詢自動售貨機中商品價格
C語言編程——統計英文字母個數
C語言程序設計很難?入門學習5部曲帶你上車!小白福利!
C語言從入門到進階,少走很多彎路,你選對了嗎!
盤點C語言編程常見的幾大陋習,你中招了嗎?現在改還來得及!

TAG:C加加 |

您可能感興趣

原來,你是這樣的R語言
比開口說另一種語言更難的,是「關掉」原來的語言|PNAS 論文推薦
8國語言智能識別翻譯,圖片轉成文字原來這麼簡單
彙編語言比c語言快,這是誤會
C語言得分令你崩潰?了解一下原因?
一文帶你讀懂自然語言處理-事件提取
一文帶你讀懂自然語言處理-事件提取
如何用簡單易懂的語言來介紹量子物理?
語言能否表達作為最高原理的「道」?
數據結構與演算法分析——C語言描述
c語言 實現一個函數,判斷一個數是不是素數
比開口說另一種語言更難的,是「關掉」原來的語言
為什麼漢語被評為世界上最難的語言?看了這個才知道原因這麼簡單
C語言動態內存分配基礎知識詳解
智能語言「嗨森」一下,知你言懂你心
寶寶多大可以「說整句話」?語言發育「單句期」來了解一下
德勤英文語言理解真題
為什麼說C語言不是低級語言?
如何理解狗狗的尾巴「語言」?
一文助你解決90%的自然語言處理問題