嵌入式團隊培訓 函式

2021-09-28 21:39:31 字數 4577 閱讀 1364

三、函式名

四、引數

五、值傳遞、址傳遞和引用傳遞

六、遞迴函式

七、總結

八、作業

數學上的函式 z = f(x,y) 因變數 = 函式名(自變數,自變數)

計算機的函式 返回值(=)函式名(引數,引數/函式指標)

void  f (

int x,int y)

;int f(int x,int y);

int* f(int x,int y);

int* f(int x,int

(*fun)

(int y,

int z));

//了解即可

函式:所有的命令都封裝在乙個塊內。每個塊都會執行特定的任務。

為什麼:使用函式讓程式更加模組化,從而提高程式**的可讀性,方便後期修改,完善。

例如:讀入一系列數字,再分類這些數字,在找出這些數字的平均值,最後列印柱狀圖。

int

main()

主函式: main()——該函式是程式啟動後,第乙個執行的函式,即程式的入口。 其他所有函式都是 main()函式的子函式,但乙個函式只能被定義一次,可以根據需要被多次的宣告和呼叫。

(1)返回值的型別可以是 void 或者任何物件型別。

(2)函式無法返回函式或陣列。然而,可以定義乙個函式的返回值為指標,並將該指標指向乙個函式或陣列。

exit(0);//退出程式

return 0;//退出函式

小駝峰形式:readlist(list,size);

或者ansi c風格:read_list(list,size);

函式定義時用的變數叫形參

傳遞給函式的中形參值或變數叫實參

/**

* 計算圓的周長

* @param r 半徑

* @return 圓周長

*/double

circle

(double r)

intmain()

注意:

1形參在未出現函式呼叫時,他們並不占用記憶體單元,只有在發生函式呼叫的時候形參才被分配記憶體,函式呼叫完成後,形參所佔的記憶體被釋放

2實參可以是變數,常量或者表示式

double c = circle(a); double c = circle(2.1111); double c = circle((2.1111 + a) / 2);

3形參與實參的資料型別一定要可相容

4.在c語言中,實參與形參的資料傳遞是「值傳遞」,即單向傳遞,只由實參傳遞給形參,而不能由形參傳遞給實參。值傳遞時,實參不變。

注:如果函式的引數是個陣列,或者字串的時候,那麼是可以通過形參修改實參的值,(引用傳遞)

簡單的例子。函式swap用來交換兩個數的值。

(1)值傳遞,雖然傳遞了引數,但是變數本身的值並沒有做交換。實際上引數m和n在傳入函式之前還複製了裡面的內容,並把內容交給乙個臨時的記憶體,然後在內部執行交換操作後,只是臨時記憶體m和n做了交換,可見值傳遞只是傳遞了實參中的值,在函式內部也無法修改外部的實際引數。

在swap函式執行語句的最前面,隱含地存在m=m; n=n;這兩條語句,這樣就便於理解了。當m,n把值賦給函式中m,n之後,對函式中的m,n不論再做什麼操作,都不會影響到m,n(主函式中的)本身

#include

/** * 交換兩個值

* @param m 第乙個值

* @param n 第二個值

*/void

swap

(int m,

int n)

intmain()

(2)位址傳遞,與值傳遞的分析一樣,我們同樣可以設想,在swap函式裡,隱含地存在m=&m; n=&n;這兩條語句,這表示m的位址代入到了m,n的位址代入到了n。這樣一來,對*m, *n的操作就是m,n本身的操作。所以主函式中的m,n的值被對調了。

#include

/** * 交換兩個值

* @param m 指向第乙個值的指標

* @param n 指向第二個值的指標

*/void

swap

(int

* m,

int* n)

intmain()

(3)引用傳遞先看函式的宣告和呼叫的寫法,函式呼叫和值傳遞的寫法是一樣的,但是函式宣告是不一樣的。

宣告:swap (int &m, int &n)

函式呼叫:swap (m, n)

因為定義的x,y前面有&取位址符,調用函式swap時,m,n分別代替了m,n,即函式中的m,n分別引用了主函式中的m,n變數。因此,函式裡的操作,實際上是對實參m,n本身的操作,其值發生了對調。

#include

/** * 交換兩個值

* @param m 第乙個值的引用

* @param n 第二個值的引用

*/void

swap

(int

&m,int

&n)int

main()

函式可以呼叫自己,這就叫函式的遞迴:

注意:

1.遞迴函式必須有結束條件。

2.當函式在一直遞推,直到遇到結束條件後返回

所以遞迴要有兩個要素,結束條件與遞推關係

#include

/** * 計算斐波那契數列

* @param num 斐波那契數列的項數

* @return 斐波那契數列值

*/long

fibonacci

(long num )

else

}int

main()

遞迴的優缺點

遞迴給某些程式設計問題提供了最簡單,易懂的方法。

但是乙個有缺陷的遞迴會很快耗盡計算機的資源,遞迴的程式難以理解和維護,且當資料過多過大時,程式執行時間會很長。

函式作為工具類知識點,重點是要在平時開發程式設計中習慣性的運用函式程式設計,體現模組化的設計思想。

**注釋例如:

/**

* (函式功能):

* @param (引數含義)

* @return (返回值含義)

*/

description1

本來題目到上一題就結束了,不過周五的某個上午,nemaleswang接到了boos上級xl老(yuan)師(zhang)的**,他語重心常的對nemaleswang說這次的題目要出好啊,盡量幫他篩選出來藍橋杯能拿省三的同學,媽呀,省三不是會暴力就行了嘛,於是nemaleswang不屑於出這些簡單題,於是甩鍋給了小玩,小玩也很難受啊,於是他隨便找了兩道題就敷衍了最後的這兩道暴力題(都告訴你是暴力了你還要怎樣?)

第一題:小玩去餐館吃飯,這裡有兩種主食,一種是noodle,我們用n表示,分為1、2、3三種尺寸分別代表小份、中份、大份,**分別是3,6,8

另外一種是rice,我們用r表示,分為1、2、3三種尺寸分別代表小份、中份、大份,**分別是10,12,18

現在小玩點了n份吃的,問小玩一共吃了多少錢的食物

input

第一行乙個整數n,代表小玩點了多少份吃的

接下來n行,每行乙個字元s(要麼是n,要麼是r),代表麵食或者公尺飯,乙個整數(只能是1,2,3)代表這乙份吃的的尺寸(小玩可以無限買吃的,不要管重複不重複)

output

輸出小玩買這些吃的的**

sample input 1

2r 1

n 2sample output 1

16hint

對於100%的資料,n <= 50

description2 給你t組資料每組兩個數n和m,讓你求n的m次方有多少位數。

input

多組資料,第一行乙個整數t(1<=t<=100),接下來t行每行兩個空格隔開的數n和m。(0

input

輸入格式: 第一行為2個數n,k(含義如上題) 第二行為n個數,表示這個序列

output

輸出格式: 如果m為質數則 第一行為』yes』(沒有引號) 第二行為這個數m 否則 第一行為』no』 第二行為這個數m

sample input 1

5 21 2 3 4 5

sample output 1

yes2

提示對於第k大的詳細解釋 :

如果乙個序列為1 2 2 2 3

第1大 為3

第2大 為2

第3大 為2

第4大 為2

第5大 為1

第k小與上例相反

另外需要注意的是

最小的質數是2, 如果小於2的話, 按不是質數處理

嵌入式培訓學校怎麼選?嵌入式培訓學什麼

嵌入式系統是當前熱門 具發展前景的it應用領域之一,很多數字包括手機 電子字典 可視 數字相機 數字攝像機 機頂盒 智慧型玩具醫療儀器和航空航天裝置等都是典型的嵌入式系統。目前嵌入式人才匱乏,一些權威部門統計,我國目前嵌入式軟體人才缺口每年為50萬人左右,嵌入式人才供給一直處於供不應求的狀態,所以很...

嵌入式學習培訓能學會嗎?嵌入式開發培訓都要學什麼?

嵌入式學習培訓能學會嗎?嵌入式開發培訓都要學什麼?掌握linux常用操作命令,與系統管理 理解嵌入式系統程序管理,檔案管理,linux核心 熟悉arm在不同硬體平台下的作業系統移植和裝置驅動檔案管理等相關知識,學習qt程式開發,進行嵌入式系統程式的除錯。學會嵌入式開發的分析問題 解決問題的思維方法,...

學習嵌入式培訓課程安排,嵌入式培訓靠譜嗎?

嵌入式系統是一種專用的計算機系統,作為裝置或裝置的一部分。國內普遍認同的嵌入式系統定義為 以應用為中心,以計算機技術為基礎,軟硬體可裁剪,適應應用系統對功能 可靠性 成本 體積 功耗等嚴格要求的專用計算機系統。舉些例子,手機 電子時鐘 智慧型報警裝置 自動監控器 計程車計費器等等都屬於嵌入式系統。現...