色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 學習筆記 > 嵌入式學習筆記:函數入門知識總結

嵌入式學習筆記:函數入門知識總結 時間:2018-09-13      來源:未知

函數的意義

函數是一段程序,可以完成一個功能,例如:printf

提高程序的通用性,減少重復的代碼(具有相似功能的代碼)

實現模塊化設計的基礎

1.2函數的分類

main()函數,每個程序都必須要實現的,程序從main()函數開始執行,從main()函數結束

庫函數:由系統已經實現的函數,例如:printf

自定義函數:用戶自行設計并實現

1.3函數的使用

以math(數學庫)為例,用man math.h查看庫中函數

注意:必須有頭文件:#include

例子1:pow()

函數功能:計算x的y次方,可使用man pow可查看pow()函數的使用方法

函數模型:double pow(double x,double y)

提供的信息:需要的參數,返回的結果的類型

使用函數的語法:函數名(參數列表)

實際情況

例子2:sqrt()

函數的功能:計算一個數的平方根

函數原型:double sqrt() //

提供的信息:需要提供一個double類型的參數

使用函數提供的參數可以是常量,變量,表達式

注意:使用數學庫在編譯時候必須使用 gcc select.c –lm

pow,sqrt為double型

補充:常見數學函數

1.4函數的執行過程

一旦程序中包含其他函數的調用(使用),執行到對應的函數調用的語句時,跳轉到對應的函數執行,執行完畢后會返回調用的語句的下一條語句繼續執行

具體實現過程:

1.5函數的定義

1.51函數的定義:函數的實現,需要我們設計函數對應的功能,參數,以及返回值

1.52定義的語法:

類型標識符 函數名(形式參數類型說明列表)

{

函數體

}

注:類型標識符:說明函數返回值的類型

函數名:符合命令規則即可,函數入口地址

形式參數說明列表:函數執行時需要提供的參數

函數體:具體的功能實現

():函數的標識

1.53設計過程:

(1)函數的原型設計:函數的名字,參數,返回值的類型確定

注意:需要將函數的原型設計寫在調用(使用)之前,為了編譯器對函數調用語句進行語法檢查,

例如:int max(int x, int y);

注意:函數的聲明處需要加分號

(2)函數的函數體的設計:函數的名字,參數,返回值類型的確定

函數具體功能的實現

注意:一個函數中,不能嵌套定義另外一個函數,

完整實例:

1.6函數的形式參數

表示函數所需要的參數

形式參數寫在函數定義與聲明中形式列表中

類型標識符 函數名(類型1 參數名1,類型2 參數名2…..)

每個形式參數都必須寫參數名與類型

正確寫法:int add(int x,int y)

錯誤寫法:int add(int x,y)

形式參數一般每變量名

1.7函數的實際參數

表示函數提供的參數

實際參數是在函數調用時寫在括號中的實際參數列表

函數名(實際參數1,實際參數2…..)

例如:add(3,4,5)

1.8值傳遞

將實際參數的值傳遞給形式參數

在傳遞值采用一一對應的方式

如:形參1=實參1 形參2=實參2….

只能將實際參數的值傳遞給形式參數,且只能單向傳遞

實際參數與形式參數之間,保持類型、個數、順序一致

1.9無參函數

沒有形式參數的函數,在形式參數類表中使用void表示(標準規范)

注意:調用時候,括號中不需要寫void

實例:

1.10函數的返回值

如果一個函數需要返回運算結果,使用return關鍵字

return可以為變量或表達式或常量

函數允許沒有return,正對沒有返回值的函數,不能return一個值,函數執行完畢后,自動返回

例如:

注意:return的值原則上需要與聲明的返回值的類型保持一致

如果沒有返回值,就寫void

 

補充:return的作用:1.返回一個值

終止函數的執行,立即返回

1.11注意及補充

1.變量的作用域:表示一個變量的作用范圍

變量的生命周期:表示一個變量在內存中存在的時間

局部變量:一般定義在函數的內部(包括形式參數)

作用域:一般從定義的位置開始,到對應的{}結束

生命周期:從定義的位置開始,到超過作用域之后結束

從分配空間(定義時)到釋放空間(超過作用域)的時間

全局變量:定義在函數外部

作用域:從定義的位置開始,到整個源文件結束

生命周期:從定義的位置開始,到整個程序執行結束

補充:程序加載到內存中之后,將數據分不同的類型分開存儲,不同的區域存儲不同的類型

棧區:存儲局部變量

數據區:存儲靜態變量(使用static int a)

作用:以提高局部變量的生命周期(從定義的位置開始,一直到函數執行結束)但是沒有改變作用域,且只會初始化一次,對應的值一直存在

注意:函數的形式參數屬于局部變量,不同函數的形式參數即使同名,在內存空間中是不同的

不同函數中使用相同名字的局部變量,在內存中同樣擁有不同的存儲空間

形式參數不會影響實際參數

局部變量,靜態變量,全局變量都是根據作用域,生命周期來進行區分

自動變量(auto),靜態變量(static)根據存儲區域來進行區分

默認情況變量的存儲類型為auto,屬于自動局部變量,超過作用域,生命周期就結束

√符號常量:在c語言中使用#define關鍵字來定義,提高程序的通用性

使用:#define 符號標識名 常量值(表達式)

#define SIZE 5

原理:在預編譯階段進行符號標識的替換,將程序所有引用的符號表示替換成后面的值

流程:源程序(test.c)--預編譯(處理預處理命令,以#開頭)---編譯(c—cpu指令)---匯編---鏈接(test.0,ptintf.o)--可執行文件

2. goto 語句:跳轉到指定的標識符去執行

例子:

3.技巧性:在ubuntu中ctrl+v進行選中后,按=可對齊所選行列

4.應用性:計算二維數組的行列和時,可使用以下方法

5. bool 類型:在c語言中用于表示真和假的類型,在內存中的值為 1 和 0

使用 true(1) 與 false(0)表示

使用方法:

① 定義頭文件:#include

② 使用函數:

6技巧性:用于顯示重復的數字,字母等時,要靈活使用數組下標

具體案例:



 

 

上一篇:嵌入式學習筆記:二維數組定義與使用

下一篇:嵌入式學習筆記:指針和指針變量的區別(指針知識點大全)

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: CAOPORN成人免费公开 | 欧洲免费无线码在线一区 | 消息称老熟妇乱视频一区二区 | 亚洲第一网站男人都懂 | 日本免费在线观看视频 | 福利午夜少妇波多野结衣 | 国产精品无码专区AV在线播放 | 天天综合亚洲色在线精品 | 蜜桃视频一区二区在线观看 | 午夜内射中出视频 | 一区二区三区AV高清免费波多 | 中文字幕乱码高清免费网站 | 日本打屁股调教免费网站 | 66lu国产在线观看 | 亚洲日韩中文字幕日本 | 乱子轮熟睡1区 | 国产又爽又黄又舒服又刺激视频 | 免费看片成人 | 河北老熟女hd | 五十老熟妇乱子伦免费观看 | 波多野结衣二区 | 久久久久久影视 | 日日夜夜精彩视频 | 爽到高潮漏水大喷视频 | 超清无码av丝袜片在线观看 | 香蕉久久精品日日躁夜夜躁夏 | 啊灬啊灬啊灬快灬高潮了视频网站 | 欧美变态另类ZOZO | 亚洲精品国产一区二区三区在线观看 | 国产精品麻豆自拍 | 中文字幕丰满伦子无码 | 69精产国品一二三产品价格 | 亚欧免费无码aⅴ在线观看 亚洲综合色丁香婷婷六月图片 | 人妻少妇AV无码一区二区 | 免费看日b视频 | 婷婷激情综合色五月久久竹菊影视 | 久久久综合香蕉尹人综合网 | 精品无码久久久久久午夜福利 | 激情国产在线 | 亚洲AV日韩AV一区谷露 | 国内精品免费一区二区2001 |