函式
c語言不能巢狀定義函式,但可以巢狀呼叫函式,即允許在呼叫乙個函式的過程中,又呼叫另乙個函式。例如:
例如下面的漢偌塔問題:
陣列元素作函式引數
陣列名作函式引數
多維陣列名作函式引數
(1)陣列元素作函式實參
例1:輸入一行字元,分別統計出其中大寫字母和 小寫字母的個數。
#include 「stdio.h」
main()
printf(「大寫字母個數:%d」, k);
printf(「小寫字母個數:%d」, p);
int fun(char x )
(2)陣列名作函式實參
用陣列名作函式引數,應該在主調函式和被調函式分
別定義陣列。
實參——陣列名 形參——陣列名或指標變數
實參陣列與形引數組型別應一致。
系統將實參陣列的首位址傳給形引數組
用陣列名作函式引數時,形引數組的改變也可以使實
引數組隨之改變。
例2:有乙個一維陣列score,內放10個學生成績,求平均成績。
float fun(float a[10]);
main()
main()
{ int a[10], i;
for(i=0; i<10; i++)
scanf(「%d」,&a[i]);
fun(a);
for(i=0;i<10;i++)
printf(「%d 」,a[i]);
(3)用多維陣列名做函式引數
變數按其作用域分類可分為區域性變數和全域性變數。
區域性變數:在乙個函式內部定義的變數。
有效範圍:只在本函式範圍內有效。
全域性變數:在函式外部定義的變數(又叫外部變數)。
有效範圍: 從定義變數的位置開始到本原始檔結束,可以為本檔案其他函式所共用。
函式內部定義的變數(區域性變數) , 只在該函式範圍內有效。(main主函式也不例外) 乙個函式不能使用其他函式中定義的變數.
不同函式中可以使用相同名字的變數,它們代表不同的物件,互不干擾。
形式引數也是區域性變數。
可以在復合語句中定義變數, 這些變數只在復合語句中有效。
有時希望函式中的區域性變數的值,在呼叫結束後不消失,而保留原值。即其占用的儲存單元不釋放,下次呼叫該函式時,該變數已有值(上一次呼叫結束時的值)。這時應定義該區域性變數為「區域性靜態變數」,用static加以宣告。
加c/c++學習交.流群獲取c語言、c++、windows高階程式設計,mfc框架程式設計、qt框架程式設計,linux應用程式開發,linux核心研究等系統學習路線,更有高階乾貨的直播免費學習許可權對區域性靜態變數的4點說明:1、區域性靜態變數屬於靜態儲存類別,在靜態儲存區內分配儲存單元。在程式整個執行期間都不釋放。而自動變數(區域性動態變數)屬於動態儲存類別,佔動態儲存區空間,函式呼叫結束就釋放。,都是大牛帶飛 讓你少走很多的彎路的 群…號是 787190917
2、對區域性靜態變數,只在編譯時賦初值一次,以後每次呼叫函式時不再重新賦初值,而只是保留上次函式呼叫結束時的值。而對自動變數賦初值,不是在編譯時進行的, 而是在函式呼叫時進行。每呼叫一次函式,重新給自動變數賦一次初值。
3、若定義區域性變數不賦初值的話,對靜態變數來說,編譯時自動賦初值0(數值型)或空字元(字元型)。而對自動變數來說,它的值是乙個不確定的值。因為每次函式呼叫結束後儲存單元已釋放,下次呼叫又重新分配單元,而所分配的單元中的值是不確定的。
4、雖然區域性靜態變數在函式呼叫結束後仍然存在,但其它函式不能引用它。
以下2種情況需要用區域性靜態變數:
(1)需要保留函式上一次呼叫結束時的值。
(2)如果初始化後,變數只被引用而不改變其值,這時用區域性靜態變數比較方便,以免每次呼叫時重新賦值。
用靜態儲存要多佔記憶體,降低了程式的可讀性,呼叫次數多時往往弄不清區域性靜態變數的當前值是什麼。因此,要少用區域性靜態變數。
—end—
JS中函式的基礎知識
函式 一 函式定義 函式又叫方法,在程式裡面函式是用來執行某些特定功能的 為了減少重複使用 可以把特定功能的 做成函式,需要使用時拿出來呼叫。alert 就是乙個很常見的 簡單的函式,重複使用時不需要再寫 了,只是把函式名拿過來用就可以。函式後面都帶 不帶 的一般都是屬性。函式有以下4個特點 1.返...
php基礎知識和函式
echo hello aaaa 輸出語法,可以輸出多個字串 print world 可以輸出,只能輸出乙個字串 php是弱型別語言 a 5 php定義變數以 開頭 echo a a hello hello world echo a 可變變數 echo isset a 判斷變數是否定義 unset a...
這些C 基礎知識的基礎知識你都學會了嗎?
一 c 基礎知識 新的資料型別 c語言中的資料型別 練習 定義乙個命名空間為mynum,在該命名空間中定義乙個整型變數x,並給該變數賦值為105 使用c 新特性判斷mynum命名空間下的變數是奇數還是偶數。using namespace std namespace mynum using names...