當前位置:
首頁 > 知識 > C語言-函數、數組

C語言-函數、數組


一、函數


1、函數


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


2、函數定義


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

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


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


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


{


語句體;


}


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


3、函數聲明和調用


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


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

2、確定函數的形參


3、編寫函數體


4、返回值


聲明和調用


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


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


實例:



C語言-函數、數組



在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]=;//一般寫法


. Int ages[5]=;//只對前兩個元素賦值


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


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

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


. Int ages[5];ages=;//錯誤,只能在定義數組時這樣進行初始化


. Int ages[『A』]=;//正確,相當於是ages[65]


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


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


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++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 C加加 的精彩文章:

C語言代碼訓練 精講
C加加對編程學習的重要性
C和C加加的學習過程總結,內有實用學習路線
通過這 9 本開源書,學好 C加加
用C語言寫面向的對象是一種什麼樣的體驗

TAG:C加加 |

您可能感興趣

C 語言動態數組
R語言:數據類型(向量、數組、矩陣、 列表和數據框)
C語言數據類型、常量和變數
關於C語言中的scanf()函數
C語言入門---程序結構
自製Monkey編程語言編譯器:增加數組操作API和Mapsh數據類型
C語言計算-愛因斯坦數學題
數據科學的前6大語言
Go 語言變數作用域
迄今最大模型?OpenAI發布參數量高達15億的通用語言模型GPT-2
OpenAI發布高級語言人工智慧模型GPT-2,參數達7.74億個
最新調查:Python 成數據分析、數據科學與機器學習的第一大語言
李鵬飛:C語言指針和函數詳解
R語言繪圖——常用參數
NAACL2018 | 傑出論文:RNN作為識別器,判定加權語言一致性
契約與語言導論(二)
中了數據可視化的毒:BBC如何使用R語言繪製數據圖表?
谷歌最強NLP模型BERT官方中文版來了!多語言模型支持100種語言
CVPR 2019審稿滿分論文:中國博士提出融合CV與NLP的視覺語言導航新方法
2018江蘇語文作文題-語言