<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機C語(yǔ)言教程:C51函數

單片機C語(yǔ)言教程:C51函數

作者: 時(shí)間:2013-03-04 來(lái)源:網(wǎng)絡(luò ) 收藏

其實(shí)一直出現在例子中的 main()也算是一個(gè),只不過(guò)它比較特殊,編譯時(shí)以它做為程序的開(kāi)始段。有了C 就有了模塊化的優(yōu)點(diǎn),一般功能較多的程序,會(huì )在編寫(xiě)程序時(shí)把每項單獨的功能分成數個(gè)子程序模塊,每個(gè)子 程序就能用來(lái)實(shí)現。函數還能被反復的調用,因此一些常用的函數能做成函數庫以供在編寫(xiě)程序時(shí)直接調用,從而更好的實(shí)現模塊化的設計,大大提高編程工作的效率。

本文引用地址:http://dyxdggzs.com/article/170574.htm

一.函數定義

通常 C 的編譯器會(huì )自帶標準的函數庫,這些都是一些常用的函數,Keil uv 中也不 例外。標準函數已由編譯器軟件商編寫(xiě)定義,使用者直接調用就能了,而無(wú)需定義。但是 標準的函數不足以滿(mǎn)足使用者的特殊要求,因此 C 允許使用者根據需要編寫(xiě)特定功能的 函數,要調用它必須要先對其進(jìn)行定義。定義的模式如下:

函數類(lèi)型 函數名稱(chēng)(形式參數表)

{

函數體

函數類(lèi)型是說(shuō)明所定義函數返回值的類(lèi)型。返回值其實(shí)就是一個(gè)變量,只要按變量

類(lèi)型來(lái)定義函數類(lèi)型就行了。如函數不需要返回值函數類(lèi)型能寫(xiě)作“void”表示該函數沒(méi) 有返回值。注意的是函數體返回值的類(lèi)型一定要和函數類(lèi)型一致,不然會(huì )造成錯誤。函數名 稱(chēng)的定義在遵循 C 語(yǔ)言變量命名規則的同時(shí),不能在同一程序中定義同名的函數這將會(huì )造成 編譯錯誤(同一程序中是允許有同名變量的,因為變量有全局和局部變量之分)。形式參數 是指調用函數時(shí)要傳入到函數體內參與運算的變量,它能有一個(gè)、幾個(gè)或沒(méi)有,當不需要 形式參數也就是無(wú)參函數,括號內能為空或寫(xiě)入“void”表示,但括號不能少。函數體中 能包含有局部變量的定義和程序語(yǔ)句,如函數要返回運算值則要使用 return 語(yǔ)句進(jìn)行返 回。在函數的{}號中也能什么也不寫(xiě),這就成了空函數,在一個(gè)程序項目中能寫(xiě)一些 空函數,在以后的修改和升級中能方便的在這些空函數中進(jìn)行功能擴充。

二.函數的調用

函數定義好以后,要被其它函數調用了才能被執行。C 語(yǔ)言的函數是能相互調用的, 但在調用函數前,必須對函數的類(lèi)型進(jìn)行說(shuō)明,就算是標準庫函數也不例外。標準庫函數的 說(shuō)明會(huì )被按功能分別寫(xiě)在不一樣的頭文件中,使用時(shí)只要在文件最前面用#include 預處理語(yǔ) 句引入相應的頭文件。如前面一直有使用的 printf 函數說(shuō)明就是放在文件名為 stdio.h 的 頭文件中。調用就是指一個(gè)函數體中引用另一個(gè)已定義的函數來(lái)實(shí)現所需要的功能,這個(gè)時(shí)候函 數體稱(chēng)為主調用函數,函數體中所引用的函數稱(chēng)為被調用函數。一個(gè)函數體中能調用數個(gè) 其它的函數,這些被調用的函數同樣也能調用其它函數,也能嵌套調用。筆者本人認為 主函數只是相對于被調用函數而言。在 c51 語(yǔ)言中有一個(gè)函數是不能被其它函數所調用的, 它就是 main 主函數。調用函數的一般形式如下:

函數名 (實(shí)際參數表) “函數名”就是指被調用的函數。實(shí)際參數表能為零或多個(gè)參數,多個(gè)參數時(shí)要用逗

號隔開(kāi),每個(gè)參數的類(lèi)型、位置應與函數定義時(shí)所的形式參數一一對應,它的作用就是把參 數傳到被調用函數中的形式參數,如果類(lèi)型不對應就會(huì )產(chǎn)生一些錯誤。調用的函數是無(wú)參函 數時(shí)不寫(xiě)參數,但不能省后面的括號。

在以前的一些例子我們也能看不一樣的調用方式:

1.函數語(yǔ)句

如 printf (Hello World!n); 這是在 我們的第一個(gè)程序中出現的,它以 Hello

World!n為參數調用 printf 這個(gè)庫函數。在這里函數調用被看作了一條語(yǔ)句。

2.函數參數 “函數參數”這種方式是指被調用函數的返回值當作另一個(gè)被調用函數的實(shí)際參

數,如 temp=StrToInt(CharB(16));CharB 的返回值作為 StrToInt 函數的實(shí)際參數傳遞。

3.函數表達式

而在上一篇的例子中有 temp = Count();這樣一句,這個(gè)時(shí)候函數的調用作為一個(gè)運算 對象出現在表達式中,能稱(chēng)為函數表達式。例子中 Count()返回一個(gè) int 類(lèi)型的返回 值直接賦值給 temp。注意的是這種調用方式要求被調用的函數能返回一個(gè)同類(lèi)型的值, 不然會(huì )出現不可預料的錯誤。

前面說(shuō)到調用函數前要對被調用的函數進(jìn)行說(shuō)明。標準庫函數只要用#include 引入已 寫(xiě)好說(shuō)明的頭文件,在程序就能直接調用函數了。如調用的是自定義的函數則要用如下形 式編寫(xiě)函數類(lèi)型說(shuō)明

類(lèi)型標識符 函數的名稱(chēng)(形式參數表); 這樣的說(shuō)明方式是用在被調函數定義和主調函數是在同一文件中。你也能把這些寫(xiě)到

文件名.h 的文件中用#include 文件名.h引入。如果被調函數的定義和主調函數不是在同 一文件中的,則要用如下的方式進(jìn)行說(shuō)明,說(shuō)明被調函數的定義在同一項目的不一樣文件之上, 其實(shí)庫函數的頭文件也是如此說(shuō)明庫函數的,如果說(shuō)明的函數也能稱(chēng)為外部函數。

extern 類(lèi)型標識符 函數的名稱(chēng)(形式參數表); 函數的定義和說(shuō)明是完全不一樣的,在編譯的角度上看函數的定義是把函數編譯存放在

ROM 的某一段地址上,而函數說(shuō)明是告訴編譯器要在程序中使用那些函數并確定函數的地 址。如果在同一文件中被調函數的定義在主調函數之前,這個(gè)時(shí)候能不用說(shuō)明函數類(lèi)型。也就 是說(shuō)在 main 函數之前定義的函數,在程序中就能不用寫(xiě)函數類(lèi)型說(shuō)明了。能在一個(gè)函 數體調用另一個(gè)函數(嵌套調用),但不允許在一個(gè)函數定義中定義另一個(gè)函數。還要注意 的是函數定義和說(shuō)明中的“類(lèi)型、形參表、名稱(chēng)”等都要相一致。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 函數 C51 教程 語(yǔ)言 單片機

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>