在定義函式時函式名後面括號中的變數名稱為形式引數(formal parameter,簡稱形參),
在主調函式中呼叫乙個函式時,函式名後面括號中的引數(可以是乙個表示式)稱為實際引數(actual parameter,簡稱實參)。
形參不佔儲存單元。實參與形參,個數相等,型別匹配。
呼叫函式在main函式之後要先宣告,
在編譯時將所呼叫函式的**直接嵌入到主調函式中,而不是將流程轉出去。
這種嵌入到主調函式中的函式稱為內建函式(inline function),又稱內嵌函式
inline int max(int,int, int); //宣告函式,注意左端有inline
只有那些規模較小而又被頻繁呼叫的簡單函式,才適合於宣告為inline函式。
函式模板
template//模板宣告,其中t為型別引數
t max(t a,t b,t c) //定義乙個通用函式,用t作虛擬的型別名
template
變數的有效範圍稱為變數的作用域(scope)。
歸納起來,變數有4種不同的作用域
檔案作用域(file scope)、
函式作用域(function scope)、
塊作用域(block scope)和函式原型作用域(function prototype scope)。
檔案作用域是全域性的,其他三者是區域性的。
除了變數之外,任何以識別符號代表的實體都有作用域,概念與變數的作用域相似。
static宣告靜態區域性變數,函式呼叫後保留原值,儲存單元不釋放,只賦初值一次,若不賦初值的話,自動賦初值0或空字元。
static宣告靜態外部變數,只能用於本檔案的外部變數。
register宣告暫存器變數,訪問速度高, register int i ,f =1;
extern宣告外部變數和全域性變數,全域性就是幾個函式都可以用。
外部就是在別的檔案中已經定義了,。(別的檔案已經定義)
把建立儲存空間的宣告叫定義
把不需要儲存空間的宣告叫宣告
#include 「檔案路徑」 尋找要包含的檔案
#ifdef 識別符號
程式段1
#else
程式段2
#endif
它的作用是當所指定的識別符號已經被#define命令定義過,則在程式編譯階段只編譯程式段1,
否則編譯程式段2。#endif用來限定#ifdef命令的範圍。其中#else部分也可以沒有。
int main( )
c 學習筆記 16
普通函式與函式模板的區別 普通函式呼叫時可以發生自動型別轉換 隱式型別轉換 函式模板呼叫時,如果利用自動型別推導,不會發生隱式型別轉換 如果利用顯示指定型別的方式,可以發生隱式型別轉換 int add1 int a,int b int a 10 char c a cout add1 a,c temp...
C 16 虛函式
include stdafx.h include iostream.h class pet class dog public pet void feeding pet p 問題1.什麼叫做前繫結 early binding 和後繫結 later binding 問題2.virtual會自動繼承嗎?如...
c 學習筆記 16 遞迴
遞迴 能夠解決那些難以用簡單迴圈解決的問題 例如 八皇后問題,階乘 遞迴函式 呼叫自身的函式 1.階乘 0 1 1!1 n n n 1 n 1 n 1 n 2 假設函式factorial n 為求n 如果呼叫到n 0的情況,函式直接返回結果,函式知道如何求解最簡單的情形,稱之為基本情況或者 停止條件...