您的位置:首頁>正文

C語言程式設計入門基礎學習Do you know 函數

C語言是面向過程的, 而C++是物件導向的

C和C++的區別:

C是一個結構化語言, 它的重點在於演算法和資料結構。 C程式的設計首要考慮的是如何通過一個過程, 對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。

C++, 首要考慮的是如何構造一個物件模型, 讓這個模型能夠契合與之對應的問題域, 這樣就可以通過獲取物件的狀態資訊得到輸出或實現過程(事務)控制。 所以C與C++的最大區別在於它們的用於解決問題的思想方法不一樣。 之所以說C++比C更先進, 是因為“ 設計這個概念已經被融入到C++之中 ”。

C與C++的最大區別:在於它們的用於解決問題的思想方法不一樣。 之所以說C++比C更先進, 是因為“ 設計這個概念已經被融入到C++之中 ”, 而就語言本身而言, 在C中更多的是演算法的概念。 那麼是不是C就不重要了, 錯!演算法是程式設計的基礎, 好的設計如果沒有好的演算法, 一樣不行。 而且, “C加上好的設計”也能寫出非常好的東西。

函數

在前面我們已經講過了一些簡單的函數, 如軌範的主函數main()、標準輸出函數printf()。 在C說話中, 大多數功能都是依靠函數來實現的。 But, 你曉得什麼是函數嗎?我猜你必定不曉得。

那麼今天我們來細緻的講解一下什麼是函數, 函數的界說、內建函式與外部函數等相干知識。

1 . 函數的界說

假設有一個射擊遊戲軌范, 軌範在運轉過程中, 要不竭地發射槍彈打死怪物。 Biu!Biu!Biu!假設發射槍彈的代碼有100行, 若是說我每射擊一次就要寫這100行代碼一次, 那麼可能如今的軌范員哥哥都已經累死在電腦桌前了。 即使沒累死, 如許寫出來的軌範也會從幾十KB變成幾百M, 同時維護這些軌範代碼的軌范員哥哥看到遊戲連續射擊時代碼量的時辰,

也會斷定的拔出菜刀砍死你。

那該怎樣辦呢?為體味決【頻頻編寫代碼】這個問題, 我們可以把發射槍彈這局部的代碼給零丁拿出來放在一個{}中, 並為這段代碼起個名字。 如許, 每次我們必要發射槍彈的時辰,

經由過程這個名字來挪用發射槍彈的代碼塊就可以了, 而不是發射一次就編寫一次射擊舉措。 是不是感應很驚奇?

而這上面我們所提取並組合起來的代碼塊可以被看作是軌範中本身界說的一個函數, 玩遊戲時, 在必要發射槍彈的地方挪用這個函數就可以了。

在C說話中, 界說一個函數的詳細語法名目如下:

前往數值型別函數名([[參數類型參數名1],[參數類型參數名2],……,[參數類型 參數n]])

{

實行語句

………

return 前往值;

}

l 前往數值型別:用於限定函數前往值的資料類型;

l 函數名:表示函數的名稱, 該名稱可以按照識別字命名標準來界說;

l 參數類型:用於限定挪用編制時傳入參數的資料類型;

l 參數名:用於領受挪用編制時傳入的資料;

l return關頭字:用於竣事函數, 並前往函數指定類型的值;

l 前往值:被return語句前往的值, 該值會前往給挪用者。 若是函數沒有前往值, 則前往數值型別要聲明為void, 此時, 函數體中的return語句可以省略不寫。

在上面的語法名目中, 函數中的“[[參數類型參數名1],[參數類型參數名2],…,[參數類型 參數n]]”被稱作參數列表, 它主若是用來描述函數在被挪用時必要領受的參數。 若是你的函數不必要領受任何參數, 那麼設置參數列表為空就好了, 如許的函數被稱為無參函數。 相反地, 參數清單不為空的函數就是有參函數。 接下來分袂講解這兩種函數。

1、無參函數

在C說話中, 無參函數的界說很簡單, 先來看一個界說無參函數的示例代碼, 詳細如下:

void func()

{

printf("這是我的第一個函數! ");

}

在這個示例代碼中,func()函數就是一個無參函數,在界說時參數列表為空。要想實行這個函數,必要在main()函數中挪用它。

案例1:

1 #include

1 void func(int x, int y)

2 {

3 int sum = x + y;

4 printf("x+y=%d ", sum);

5 }

6 void main()

7 {

8 func(3, 5);

9 }

運轉成效:

在這個軌範中,第2~6行代碼界說了一個函數func(),這個函數包含兩個參數,分袂是x和y。當在main()函數中挪用func()函數時,由於傳入的參數是3和5,是以,軌范列印的成效為“x+y=8”。下面經由過程一張圖來描述func()函數的挪用過程。

從圖中可以看出,有參函數和無參函數的挪用過程近似,只不外在挪用有參函數時,必要傳入實參,並將傳入的實參賦值給形參,然後在函數體中實行x+y把持,終極將成效輸出到節制台。

值得一提的是,在界說有參函數時指定的參數x和y是情勢參數,簡稱形參,它們只在情勢上存在,並不是真正存在的參數。挪用函數時傳入的參數(如案例中的3和5)是實際參數,簡稱實參,與形參相對,實參則是指實際存在的參數。

2 . 函數的前往值

體味了函數之後我們會創造,其實函數的前往值是指函數被挪用之後,前往給挪用者的值。

函數前往值的詳細語法名目如下:

return 運算式;

對付前往值為空的函數,可以直接在return語句後面加分號,詳細語法名目如下:

return;

為了讓大師更好的理解若何使用return語句,接下來對案例1停止改寫,使func(int x, int y)函數可以前往乞降計較的成效。

案例2:

1 #include

10 int func(int x, int y)

11 {

12 int sum = x + y;

13 return sum;

14 }

15 void main()

16 {

17 int sum = func(3, 5);

18 printf("x+y=%d ", sum);

19 }

運轉成效:

從圖中可以看出,案例1與案例2實現了同樣的功能。接下來經由過程一個圖例來演示func()函數的整個挪用過程以及return語句的前往過程,如下圖所示。

從圖中可以看出,在軌範運轉時代,參數x和y相稱於在記憶體中界說的兩個變數。當挪用func(int x,int y)函數時,傳入的參數3和5分袂賦值給變數x和y,並將x+y的成效經由過程return語句前往,整個編制的挪用過程竣事,變數x和y被釋放。

必要注意的是,return後面運算式的類型和函數界說前往值的類型應保持同等。若是不一致,就有可能會報錯。若是函數沒有前往值,前往數值型別要聲明為void。為了保證軌範的可讀性和邏輯性,沒有前往值的函數都應界說為void。

糊口不止面前的苟且,還有到不了的遠方和讀不完的詩!

這些是C/C++能做的

伺服器開發工程師、人工智慧、雲計算工程師、資訊安全(駭客反駭客)、大資料 、資料平臺、嵌入式工程師、流媒體伺服器、資料控解、影像處理、音訊視頻開發工程師、遊戲伺服器、分散式系統、遊戲輔助等

void func()

{

printf("這是我的第一個函數! ");

}

在這個示例代碼中,func()函數就是一個無參函數,在界說時參數列表為空。要想實行這個函數,必要在main()函數中挪用它。

案例1:

1 #include

1 void func(int x, int y)

2 {

3 int sum = x + y;

4 printf("x+y=%d ", sum);

5 }

6 void main()

7 {

8 func(3, 5);

9 }

運轉成效:

在這個軌範中,第2~6行代碼界說了一個函數func(),這個函數包含兩個參數,分袂是x和y。當在main()函數中挪用func()函數時,由於傳入的參數是3和5,是以,軌范列印的成效為“x+y=8”。下面經由過程一張圖來描述func()函數的挪用過程。

從圖中可以看出,有參函數和無參函數的挪用過程近似,只不外在挪用有參函數時,必要傳入實參,並將傳入的實參賦值給形參,然後在函數體中實行x+y把持,終極將成效輸出到節制台。

值得一提的是,在界說有參函數時指定的參數x和y是情勢參數,簡稱形參,它們只在情勢上存在,並不是真正存在的參數。挪用函數時傳入的參數(如案例中的3和5)是實際參數,簡稱實參,與形參相對,實參則是指實際存在的參數。

2 . 函數的前往值

體味了函數之後我們會創造,其實函數的前往值是指函數被挪用之後,前往給挪用者的值。

函數前往值的詳細語法名目如下:

return 運算式;

對付前往值為空的函數,可以直接在return語句後面加分號,詳細語法名目如下:

return;

為了讓大師更好的理解若何使用return語句,接下來對案例1停止改寫,使func(int x, int y)函數可以前往乞降計較的成效。

案例2:

1 #include

10 int func(int x, int y)

11 {

12 int sum = x + y;

13 return sum;

14 }

15 void main()

16 {

17 int sum = func(3, 5);

18 printf("x+y=%d ", sum);

19 }

運轉成效:

從圖中可以看出,案例1與案例2實現了同樣的功能。接下來經由過程一個圖例來演示func()函數的整個挪用過程以及return語句的前往過程,如下圖所示。

從圖中可以看出,在軌範運轉時代,參數x和y相稱於在記憶體中界說的兩個變數。當挪用func(int x,int y)函數時,傳入的參數3和5分袂賦值給變數x和y,並將x+y的成效經由過程return語句前往,整個編制的挪用過程竣事,變數x和y被釋放。

必要注意的是,return後面運算式的類型和函數界說前往值的類型應保持同等。若是不一致,就有可能會報錯。若是函數沒有前往值,前往數值型別要聲明為void。為了保證軌範的可讀性和邏輯性,沒有前往值的函數都應界說為void。

糊口不止面前的苟且,還有到不了的遠方和讀不完的詩!

這些是C/C++能做的

伺服器開發工程師、人工智慧、雲計算工程師、資訊安全(駭客反駭客)、大資料 、資料平臺、嵌入式工程師、流媒體伺服器、資料控解、影像處理、音訊視頻開發工程師、遊戲伺服器、分散式系統、遊戲輔助等

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示