C語言-函數、數組
一、函數
1、函數
C語言程序是由函數構成的,每個函數負責完成一部分的功能,函數將功能封裝起來,以供程序調用
2、函數定義
一個函數包括函數頭函數頭和語句體兩部分,函數頭包括,函數返回值類型、函數名、參數表。
目的:將一些常用的功能封裝起來,以供日後調用
步驟:確定函數名,確定函數體,調用
格式:函數返回值類型 函數名(參數表)
{
語句體;
}
注意:函數名在程序中必須是唯一的,它也遵循標識符命名規則;參數表可以沒有也可以有多個
3、函數聲明和調用
定義函數需要明確地東西:
1、取一個有意義的函數名
2、確定函數的形參
3、編寫函數體
4、返回值
聲明和調用
為了調用一個函數,必須事先聲明該函數的返回值類型和參數類型;
當定義在調用之前時,可以不聲明函數
實例:
在main()的前面聲明了一個函數,函數類型是void型,函數名為a,無參數,然後在main()函數裡面調用這個函數
4、參數
a、形參:函數定義中的參數
b、實參:函數的調用者提供給函數的參數
c、形參和實參的個數必須相等
d、函數體內部不能定義和形參同名的變數
e、如果是基本的數據類型作為形參,則是純粹的值傳遞,修改函數內部形參的值並不會影響到實參的值
f、一個函數可以沒有形參,也可以有無限個形參
5、函數的返回值
Return的作業
退出函數
返回一個具體的值給函數的調用者
返回值使用注意
C語言是弱語法類型的語言,非常不嚴格
如果沒有寫清楚返回值的類型,則默認為int型的
Void代表沒有返回值
就算明確聲明了返回值類型,也可以不返回任何的值
C語言默認情況下,不允許有兩個同名的函數
6、函數使用注意
默認不允許函數重名
函數之間是平等的,不能夠嵌套定義
函數不可以重複定義,但是可以重複聲明,只要是在調用前聲明就可以,地方隨便
函數如果是只要聲明沒有定義,那麼編譯可以成功,但鏈接時會失效
7、補充
main函數的返回值是返回給操作系統的,0為正常退出,其他值為非正常退出。用以進行系統日誌,其實它返回任何值對程序本身沒有影響,僅僅只是標記。
Printf函數的返回值為字元數。
二、數組
1、數組的概念
用來存儲一組數據的構造數據類型
特點:只能存放一種類型的數據
2、數組的定義和聲明
格式:類型 數組名[元素個數];
遍曆數組:
注意:
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、數組內存存儲細節
在內存中,內存從大到小進行定址,為數組分配了存儲空間後,數組的元素自然的從上往下排列存儲,整個數組的地址為首元素的地址。
模擬該數組的內存存儲細節如下:
注意:字元在內存中是以對應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加加的學習過程總結,內有實用學習路線
※通過這 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江蘇語文作文題-語言