iOSDay05C語言函式

2021-07-11 18:07:52 字數 3384 閱讀 9594

本次主要是學習和理解函式,函式樹狀圖如下:

1、函式的宣告和定義

函式定義的四要素

分別為:

返回值型別

:函式的結果值型別,函式不能返回陣列。 指定返回型別是void型別說明函式沒有返回值。

函式名:函式名命名規範和變數名命名規範一樣。

引數列表

: 每個形式引數的前面說明其型別,即使幾個引數具有相同的資料型別,也必須對每個形式引數分別進行型別說明。形式引數用逗號進行分隔,就算沒有引數函式後面的()也不能省略,可以寫成(void)。

函式體:函式功能的實現。

返回值型別 函式名(引數型別 引數名,...)

返回值函式的返回值稱為函式的值,只能通過 return語句返回給主調函式。

乙個函式只能有乙個返回值。

函式即使沒有返回值也可以使

return

來結束函式的執行 ,回到主調函式。

return後面的語句不再執行。      

1

void

test()

函式宣告   

嚴格的函式通常包括三部分

: 函式宣告

、函式定義

、以及函式呼叫

函式宣告

:指的就是函式的描述,也叫函式原型。

函式宣告

: 1、函式定義出現在主調函式之前,可以省略函式宣告。

2、函式定義出現在主調函式之後,需要提前宣告函式。

函式宣告儘管可以省略,從規範來講,不要省略。

1

//1.函式宣告

2int maxvalue(int, int);3

//2.函式定義

4int maxvalue(int a, int

b)

2、函式分類從函式定義上來看,函式可分為:庫函式(系統提供好的函式,例如printf)

printf(「hello lanou\n」);

scanf(「%d」, &number);

strlen(

string

);   strcpy(string1, sthring2);

...

printf 輸出函式, 用於輸出乙個資訊

scanf 輸入函式,用於從鍵盤輸入乙個資訊

strlen 求字串長度函式,用於求指定字串的長度

strcpy 字串拷貝函式,用於實現字串複製

...  

自定義函式(開發者自己寫的函式)

從函式定義上來看,函式可分為:

第一種 無參無返回值

void

sayhello()

第二種 無返回值 有參

1

void printsum(int a, int

b)

第三種 有返回值,無參

int

randomvalue()

第四種 有返回值,有參

1

int mulvalue(int a, int

b)

3、函式呼叫函式呼叫由函式名和跟隨其後的實際引數列表組成,其中實際引數列表用(...)括起來。函式呼叫後邊始終跟著分號, 即使沒有引數也要加上()。

函式名();

函式的呼叫, 會產生程式的跳轉。

對上面函式的呼叫  

1

sayhello();

2   printsum(2, 3);3

4int random =randomvalue();

5   printf("

random = %d\n

", random);67

int mul = mulvalue(2, 3

);8   printf("

mul = %d\n

", mul);

4、形參實參形參:形式上的引數,函式定義時使用的引數,

以假名字來表示函式呼叫時需要提供的值,作用範圍為整個函式範圍。

實參:函式呼叫的時候傳過去的引數值,

出現在函式呼叫中的表示式。

注意函式呼叫中,形參會拷貝實參內容,傳遞引數是給

函式傳送資訊的一種方法。

5、函式巢狀

c語言不允許函式巢狀定義,但是允許函式巢狀呼叫。

函式巢狀定義 : 在乙個函式定義內再去定義乙個函式;

函式巢狀調 : 在乙個函式內去呼叫另乙個函式。

6、陣列作為引數傳遞

陣列作為引數是按位址傳遞的

陣列名就是陣列的首位址。因此在陣列名作函式引數時所進行的傳送只是位址的傳送, 也就是說把實參陣列的首位址賦予形參陣列名。形參  陣列名取得該首位址之後,也就等於有了實在的陣列。實際上是形引數組和實參陣列為同一陣列,共同擁有一段記憶體空間。

1

//定義函式,列印陣列中所有的元素

2void printarray(int a, int

count) 6}

7int main(int argc, const

char *argv) ;

13int count = sizeof(array) / sizeof(int

);14

15printarray(array, count);

1617

return0;

18 }

7、作用域變數作用域決定了變數的使用範圍

區域性變數

在函式內部定義的變數稱為區域性變數

作用域:從定義開始,到 ' } ' 結束

不同的函式中可以定義相同的變數,因為作用域不同

全域性變數

在函式外部定義的變數稱為全域性變數

作用域:從定義位置開始,到檔案結束

定義在主函式中,在其他.m檔案中使用時,需要使用extern宣告

iOSDay03C語言迴圈結構

1 while迴圈 while 迴圈條件 1 1.定義迴圈變數 2int time 1 3 2.迴圈條件 4while time 3 練習 列印1 100之間所有的數 1 int number 1 2 while number 100 2 do.while迴圈 do while 迴圈條件 1 int...

iOSDay08之C語言記憶體管理

本次主要學習和理解c語言中的記憶體管理 按照位址從高到低的順序 棧區,堆區,靜態區,常量區,區 區域性變數基本都在函式 迴圈 分支中定義 棧區的記憶體空間由系統自動分配和 棧頂,棧底 先定義的區域性變數儲存區域從棧底開始分配,後定義的區域性變數向棧頂分配 特點 先進後出,後進先出 當函式 迴圈 分支...

C語言05 函式及函式的呼叫過程

函式呼叫過程 集中處理非常樸素的道理,實踐以下 變參函式的話題。有意義機器碼 通過反彙編視窗確認 另外,也可以從列印函式名確認 void funtest void funvalarg char arg1,void myaddval int main int argc,char ar 作業系統為了好管...