學習目標
1.【瞭解】函數的分類java
2.【掌握】函數的聲明定義和調用c++
3.【掌握】函數的形參和實參程序員
4.【掌握】帶返回值的函數objective-c
5.【掌握】全局變量和局部變量編程
6.【瞭解】註釋插件的安裝和使用數組
1、函數的分類
C程序是由一個一個的函數組成的,咱們天天使用的main函數也是函數。其實函數在其餘編程語言裏也叫方法,java,c++,以及咱們後面立刻要開始學習的objective-c中,函數都叫他方法。編程語言
函數能夠分爲三大類:ide
1.主函數,每一個程序中有且只能有一個、也必須有一個主函數。不管主函數寫在什麼位置,C程序老是從主函數開始執行的,而且只執行main函數,其餘函數都是須要在main函數中調用的。函數
2.程序員自定義函數,就是由咱們本身寫的函數,能夠寫任意個,不限制。學習
3.C語言提供的庫函數,好比printf,scanf函數等等。
2、函數的聲明定義和調用
函數的做用:
1.實現代碼的複用,將1段代碼放在函數之中,何時想要執行這段代碼,咱們只須要調用這個函數就能夠了,減小代碼的冗餘。
2.修改和維護十分的方便,只要修改函數體的代碼,全部在調用函數的地方都會跟着一塊兒改。
3.屏蔽代碼的實現,對於函數的調用者而言,不須要關心函數的內部是如何實現的.,只須要關心函數實現什麼功能。
聲明語法:
1
|
返回值類型函數名稱
(
[參數列表
]
)
;
|
定義語法:
1
2
3
4
|
返回值類型函數名稱
(
[參數列表
]
)
{
那段須要被重用的代碼
;
函數體
;
}
|
調用語法:
1
|
函數名稱
(
[參數列表
]
)
;
//若是沒有返回值
|
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <stdio.h>
//定義一個打印99乘法表的函數
void
show99Biao
(
)
{
for
(
int
i
=
1
;
i
<=
9
;
i
++
)
{
for
(
int
j
=
1
;
j
<=
i
;
j
++
)
{
printf
(
"%d * %d = %d\t"
,
j
,
i
,
i*
j
)
;
}
printf
(
"\n"
)
;
}
}
int
main
(
int
argc
,
const
char
*
argv
[
]
)
{
//調用函數
show99Biao
(
)
;
return
0
;
}
|
函數名也就是函數的標識符,和咱們變量同樣,要遵照標識符命名規範。通常咱們爲函數命名都是以小字母開頭,若是多個單詞就第一個單詞首字母小寫,後面的每一個單詞首字母大寫。
3、函數的形參和實參
函數的參數:
聲明在定義函數的小括弧之中的變量,就叫作函數的參數,咱們能夠理解爲參數是在函數裏定義的一個局部變量,因此咱們不能在函數之中再聲明1個和參數名相同的局部變量,是會衝突的。
參數如何使用:
由於參數也就是函數裏定義的一個局部變量,因此咱們能夠在函數體內使用參數。當咱們調用1個函數的時候,若是這個這個函數帶了參數,這個時候要求在調用這個函數的時候要爲這個函數的參數賦值。
形式參數:定義在函數的小括弧之中的參數,咱們叫作形式參數, 簡稱形參。
實際參數:在調用函數的時候,實際上爲形參賦的值,就叫作實際參數,簡稱實參。
在調用帶參數的函數的時候,要求調用的時候必需要爲形參賦值,而且實參的類型最好是要和形參的類型一致,若是不一致,會作類型轉換。
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include <stdio.h>
void
panDuanOuShu
(
int
num
)
{
//帶單個參數的函數
if
(
num
%
2
==
0
)
{
printf
(
"是偶數\n"
)
;
}
else
{
printf
(
"不是偶數\n"
)
;
}
}
void
getSum
(
int
num1
,
int
num2
)
{
//帶多個參數的函數
int
sum
=
num1
+
num2
;
printf
(
"sum = %d\n"
,
sum
)
;
}
int
main
(
int
argc
,
const
char
*
argv
[
]
)
{
panDuanRunNian
(
1998
)
;
//調用panDuanOuShu函數,打印出:是偶數
getSum
(
10
,
100
)
;
//調用getSum函數,打印出:sum = 110
return
0
;
}
|
函數的參數有啥用?
調用者能夠將本身的數據,經過參數傳遞到函數的內部去。記住這句話就好了。。。
4、帶返回值的函數
return關鍵字
return關鍵字能夠用在函數之中,若是在函數之中遇到了return關鍵字,就會當即結束這個函數的執行,若是return後面還有函數體代碼是不會被執行的了,而是當即結束這個函數。
break、continue、return的區別
break用在switch-case之中,表明當即結束switch-case結構。用在循環體之中,表明當即結束當前循環結構。
continue只能使用在循環體之中,表明當即結束本次循環。
return用在函數體之中,表明結束函數。
何時函數須要返回值?
當函數執行完畢以後,有1個結果(數據),函數內部不肯定如何處理這個數據。 而且這個數據調用者須要的,調用者本身想要按照本身的方式來處理這個結果。那麼這個時候,函數就應該將這個數據返回給調用者,由調用者本身來決定如何處理這個數據。
函數如何將數據返回給調用者呢?
1). 先肯定函數內部要返回給調用者的數據的類型。
2). 修改函數的返回值類型爲要返回的數據的類型。
3). 在函數結束以前,使用return關鍵字將數據返回。
調用者如何拿到函數返回來的數據呢?
定義1個和函數的返回值類型相同的變量接收就能夠。
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#include <stdio.h>
int
isRunNian
(
int
year
)
{
if
(
year
%
400
==
0
||
(
year
%
4
==
0
&&
year
%
100
!=
0
)
)
{
return
1
;
}
return
0
;
}
int
main
(
int
argc
,
const
char
*
argv
[
]
)
{
//用戶接收返回的數據並進行處理
if
(
isRunNian
(
2016
)
!=
0
)
{
printf
(
"哈哈.終於能夠過生日了."
)
;
}
else
{
printf
(
"哎...."
)
;
}
return
0
;
}
|
5、全局變量和局部變量
局部變量
凡是定義在函數內部的變量,都叫作局部變量。咱們以前學習到的變量都是定義在函數的內部的,因此咱們以前學習到的變量都是局部變量。
全局變量
變量也能夠直接定義在.c源文件之中,也就是定義在函數的外部,這樣的變量咱們叫作全局變量。
全局變量和局部變量的異同
相同點:都是變量,都會在內存中申請空間,用來存儲數據。
做用域不一樣
局部變量能夠在函數的內部從定義這個局部變量開始,到這個做用域結束的這段期間均可以訪問。定義在1個函數中的變量,在另外1個函數絕對是不能訪問,由於它屬於不一樣的做用域。
全局變量從定義全局變量出開始,後面的全部的函數均可以訪問這個全局變量,定義在全局變量前面的函數是沒法訪問這個全局變量的。可是通常狀況下,咱們全局變量的聲明都是放在全部的函數的前面的。
默認值不一樣
咱們聲明1個局部變量,若是沒有爲這個局部變量賦值,那麼這個局部變量中的值是垃圾值。
若是咱們聲明1個全局變量,沒有爲這個全局變量賦值,那麼這個全局變量的默認值爲被自動初始化爲0。
回收時間不一樣
局部變量:當定義局部變量的大括弧被執行完畢以後,這個局部變量就會被系統當即回收。
全局變量:知道程序結束的時候,纔會回收全局變量。
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <stdio.h>
int
quanJv
=
100
;
void
test1
(
)
{
quanJv
++
;
}
int
main
(
int
argc
,
const
char
*
argv
[
]
)
{
printf
(
"quanJV = %d\n"
,
quanJv
)
;
//打印quanJV = 101
int
quanJv
=
200
;
printf
(
"quanJV = %d\n"
,
quanJv
)
;
//打印quanJV = 200
return
0
;
}
|