c語言第八章函式

2021-09-26 14:38:04 字數 2958 閱讀 9222

第八章函式

一.函式定義的一般形式

1.無參函式:

型別識別符號 函式名()

2.有參函式:

型別識別符號 函式名(形式引數表列)

二.函式引數和函式返回值

1.形參:在定義函式時函式名後面括號中的變數名

實參:主函式在呼叫乙個函式時,函式名後面括號中的引數

2.引數傳遞方式:值傳遞(單),指標傳遞

3.形參和實參的說明:(1)只有在發生函式呼叫時,函式max中的形參才被分配記憶體單元

(2)實參與形參的型別應該相同或相容

(3)實參向形參傳遞是「值傳遞」只能由實參傳給形參

三.函式的呼叫

1.在乙個函式中呼叫另乙個函式具備的條件

<1>首先被呼叫的函式必須是已經存在的函式

<2>對於庫函式,需要包含相應的標頭檔案

<3>自定義函式: 將被調函式寫在主調函式之前 在主調函式前引入被調函式宣告

2.c語言不能巢狀定義函式,但可以巢狀呼叫函式

四.函式的遞迴:再呼叫函式**現直接或間接的呼叫函式本身

漢諾塔#include

void h(int m, char a, char b, char c)

else

}int main()

五.陣列作為函式引數

1。陣列作為函式引數,此時形參應當用陣列名或者指標變數

2.陣列名作為函式引數時,一般會附加乙個引數表明陣列長度

3.通過形參陣列名對陣列元素的修改,會改變實參陣列元素的值

4.通過形參陣列名是無法獲取陣列大小的

5.實參陣列與形引數組型別應一致(float)如不一致,結果出錯

六.區域性變數和全域性變數

1.區域性變數:在函式內部定義的變數

作用域:從定義開始到其所在程式塊結束

2.全域性變數:在函式外定義的變數

作用域:從定義開始到本檔案結束

3.識別符號:(1)宣告在前,使用在後

(2)在不同作用域中宣告的同名識別符號互不影響

(3)在有相互包含關係的作用域中宣告的同名識別符號在外層識別符號在內層中不可見

4.不建議使用全域性變數:(1)空間占用 (2)劃分模組時要求內聚性強,耦合性弱,而全域性變數增加耦合性

七. 變數的儲存類別

1.從變數值存在的時間(即生存期)角度來分,可以分為靜態儲存方式和動態儲存方式

2.靜態儲存方式是指程式執行期間由系統分配固定的儲存空間的方式

動態儲存方式是在程式執行期間根據需要進行動態的分配儲存的方式

3.儲存空間的劃分:(1)程式區(**區,**段) (2)靜態儲存區(全域性變數

資料段) (3)動態儲存區 (棧區 堆疊區) (4)自由儲存區 (堆區)

4.靜態區域性變數:不隨函式就結束銷毀,函式再次執行時依舊保留上一次執行的值

未初始化 ,其值為零。

5.用extern宣告外部變數:將a檔案中的全域性變數的作用域擴充套件到b檔案中,在b檔案中寫。

6.用static宣告外部變數:表明該全域性變數的作用域被限制在本檔案中,無法通過extern

7.儲存類別小結

8.內部函式與外部函式

內部函式又稱靜態函式,因為它是用static宣告的,使用內部函式,可以使函式作用域只侷限在所屬檔案

外部函式在定義函式時,如果在函式首部最左端關鍵字extern,則表示函式可供其他檔案呼叫,在需要呼叫此函式檔案中,用extern對函式宣告,表示該函式是在其他檔案中定義的外部函式。

8.9統計字串中的字母 數字 空格和其他字元

//* #include*/

//int main()

//printf(「字母有%d個,數字有%d個,空格有%d個,其他有%d個」, letters, digits, spaces, others);

return 0;}例二

//18.給出年月日計算該日是該年的第n天

//#define _crt_secure_no_warnings

//#include

//#include

//int leap_year(int year)

//// return 0;//不是返回0

//}//int fun(int year, int month, int day)

//;//12月各月天數

// month[1] += leap_year(year);//如果這一年是閏年則二月+1為29天,不是閏年則+0還是28天

// for (int i = 0; i < month - 1; ++i)

// count += day;//加上還不到整一月的天數

// return count;

//}//void main()

//// printf(「年份必須非負,請重新輸入年份\n」);

// }

// printf(「請輸入月份\n」);

// while (1)

// // if (month>12)

// // break;

// }

// printf(「請輸入日\n」);

// while (1)

// // if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)

// break;

// }

// else if (month == 2)

// // if (leap_year(year) == 0 && day > 28)

// // break;

// }

// else

// // break;

// }

// }

// printf("%d年%d月%d日是該年的第%d天\n", year, month, day, fun(year, month, day));

// system(「pause」);

//}

C語言 第八章

這一章沒有怎麼仔細看,其實也很簡單,記住格式就行了。等不會的時候可以翻書看一下就ok了。到此為止,譚浩強的這本書已經看完一遍了,找到了10個左右的錯誤,感覺有點驚訝。後天c語言的聖經就買回來了,到時候再認真看看那本吧 評價極高啊 聖經orz 一 c語言的標準 i o庫中定義了3個 file 型指標 ...

c語言 第八章

在這裡插入 片 善於利用指標 includeint main int d 3 4 int d 3 4 pointer 1 a pointer 2 b printf a d,b d n a,b printf pointer 1 d,pointer 2 d n pointer 1,pointer 2 p...

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...