C語言-函數、數組

編程語言 C語言 編譯器 技術 C加加 2017-05-17

一、函數

1、函數

C語言程序是由函數構成的,每個函數負責完成一部分的功能,函數將功能封裝起來,以供程序調用

2、函數定義

一個函數包括函數頭函數頭和語句體兩部分,函數頭包括,函數返回值類型、函數名、參數表。

目的:將一些常用的功能封裝起來,以供日後調用

步驟:確定函數名,確定函數體,調用

格式:函數返回值類型 函數名(參數表)

{

語句體;

}

注意:函數名在程序中必須是唯一的,它也遵循標識符命名規則;參數表可以沒有也可以有多個

3、函數聲明和調用

定義函數需要明確地東西:

1、取一個有意義的函數名

2、確定函數的形參

3、編寫函數體

4、返回值

聲明和調用

為了調用一個函數,必須事先聲明該函數的返回值類型和參數類型;

當定義在調用之前時,可以不聲明函數

實例:

C語言-函數、數組

想要一起學習C++的可以加裙248894430,群內有各種資料滿足大家

在main()的前面聲明瞭一個函數,函數類型是void型,函數名為a,無參數,然後在main()函數裡面調用這個函數

4、參數

a、形參:函數定義中的參數

b、實參:函數的調用者提供給函數的參數

c、形參和實參的個數必須相等

d、函數體內部不能定義和形參同名的變量

e、如果是基本的數據類型作為形參,則是純粹的值傳遞,修改函數內部形參的值並不會影響到實參的值

f、一個函數可以沒有形參,也可以有無限個形參

5、函數的返回值

Return的作業

退出函數

返回一個具體的值給函數的調用者

返回值使用注意

C語言是弱語法類型的語言,非常不嚴格

如果沒有寫清楚返回值的類型,則默認為int型的

Void代表沒有返回值

就算明確聲明瞭返回值類型,也可以不返回任何的值

C語言默認情況下,不允許有兩個同名的函數

6、函數使用注意

默認不允許函數重名

函數之間是平等的,不能夠嵌套定義

函數不可以重複定義,但是可以重複聲明,只要是在調用前聲明就可以,地方隨便

函數如果是隻要聲明沒有定義,那麼編譯可以成功,但鏈接時會失效

7、補充

main函數的返回值是返回給操作系統的,0為正常退出,其他值為非正常退出。用以進行系統日誌,其實它返回任何值對程序本身沒有影響,僅僅只是標記。

Printf函數的返回值為字符數。

二、數組

1、數組的概念

用來存儲一組數據的構造數據類型

特點:只能存放一種類型的數據

2、數組的定義和聲明

格式:類型 數組名[元素個數];

遍歷數組:

C語言-函數、數組

注意:

a、數組的初始化

①. Int ages[5]={17,18,19,20,21};//一般寫法

②. Int ages[5]={17,18};//只對前兩個元素賦值

③. Int ages[5]={[3]=10,[4]=11};//對指定的元素賦值,這裡為第三個和第四個

④. Int ages[]={11,12,13}.//正確,右邊的元素確定,則個數可以省略這裡為3個。

⑤. Int ages[];//錯誤,編譯器無法知道應該分配多少的存儲空間

⑥. Int ages[5];ages={17,18,19,20,21};//錯誤,只能在定義數組時這樣進行初始化

⑦. Int ages[‘A’]={1,2,3};//正確,相當於是ages[65]

⑧. Int count=5;int ages[count];//如果不進行初始化,則這種寫法正確,編譯器不會報錯為其分配20個字節的存儲空間,ages[0]=1;ages[1]=2;可以像這樣對數組的元素進行賦值,但是2,3,4等元素的值時不確定的。

⑨. 而int count=5;int ages[count]={1,2,3,4,5};//這種寫法是錯誤的,在定義數組時對數組進行初始化,元素的個數必須為常量或者不寫,不能是一個變量

b、計算數組元素

當沒有表明數組元素個數時,如何對其進行遍歷(要求使用數組元素個數)?可以使用sizeof運算符來計算數組元素的個數

Int count=sizeof(ages)/sizeof(int); //數組的總長度除以單個的長度等於元素個數

3、數組內存存儲細節

在內存中,內存從大到小進行尋址,為數組分配了存儲空間後,數組的元素自然的從上往下排列存儲,整個數組的地址為首元素的地址。

模擬該數組的內存存儲細節如下:

C語言-函數、數組

注意:字符在內存中是以對應ASCII值的二進制形式存儲的,而非上表的形式。

4、數組-傳址調用

Array數組與ages數組的地址一致,若以數組作為函數的參數,這種傳遞方式是傳址調用,傳遞的是整個數組的地址,修改形參數組元素的值,就是修改實參的值。

當你把一個數組當做參數來傳遞時,它會看做是一個指針,在該函數體內使用sizeof運算符來計算數組的長度,得出的數值永遠為8,而非數組的實際長度,因為任何類型的指針都佔8個字節的存儲空間。

提示:數組作為一個函數的參數時,如果函數體涉及到數組遍歷等操作,通常把數組的實際元素個數也作為參數傳遞給函數。

5、二維數組

Int ages[50];//數組能夠存放50個int類型的數據

Int ages1[3][10];//數組能夠存放3個數組,每個數組存放10個數值,共3x10=30個述職數值。

一個二維數組a,a包括兩個一維數組a[0]和a[1],每個一維數組都包括三個元素。

內存情況:

C語言-函數、數組

想要一起學習C++的可以加裙248894430,群內有各種資料滿足大家

相關推薦

推薦中...