在函式定義**現的引數可以看做是乙個佔位符,它沒有資料,只能等到函式被呼叫時接收傳遞進來的資料,所以稱為形式引數,簡稱形參。
函式被呼叫時給出的引數包含了實實在在的資料,會被函式內部的**使用,所以稱為實際引數,簡稱實參。
形參和實參的功能是傳遞資料,發生函式呼叫時,實參的值會傳遞給形參。
形參和實參有以下幾個特點:
1 #include 23//計算從1加到n的值
4int sum(int
n)9 printf("
the inner n = %d\n
",n);
10return
n;11}12
13int
main()
執行結果:
input a number: 100↙
the inner n = 5050
the outer m = 100
1+2+3+...+99+100 = 5050
通過 scanf 輸入 m 的值,作為實參,在呼叫 sum() 時傳送給形參 n。
從運**況看,輸入 m 值為100,即實參 m 的值為100,把這個值傳給函式 sum 時,形參 n 的初始值也為100,在函式執行過程中,形參 n 的值變為 5050。函式執行結束後,輸出實參 m 的值仍為100,可見實參的值不隨形參的變化而變化。
摘自定義在函式內部的變數稱為區域性變數(local variable),它的作用域僅限於函式內部, 離開該函式後就是無效的,再使用就會報錯。
1int f1(inta)5
intmain()
在所有函式外部定義的變數稱為全域性變數(global variable),它的作用域預設是整個程式,也就是所有的原始檔,包括 .c 和 .h 檔案。
1int a, b; //
全域性變數
2void
func1()56
float x,y; //
全域性變數
7int
func2()
1011
intmain()
a、b、x、y 都是在函式外部定義的全域性變數。c語言**是從前往後依次執行的,由於 x、y 定義在函式 func1() 之後,所以在 func1() 內無效;而 a、b 定義在源程式的開頭,所以在 func1()、func2() 和 main() 內都有效。
1 #include 23int n = 10; //
全域性變數45
void
func1()910
void func2(int
n)13
14void
func3()
1718
intmain()包圍
2428 printf("
main n: %d\n
", n);
2930
return0;
31 }
執行結果:
func1 n: 20
func2 n: 30
func3 n: 10
block n: 40
main n: 30
**中雖然定義了多個同名變數 n,但它們的作用域不同,在記憶體中的位置(位址)也不同,所以是相互獨立的變數,互不影響,不會產生重複定義(redefinition)
錯誤。
1) 對於 func1(),輸出結果為 20,顯然使用的是函式內部的 n,而不是外部的 n;func2() 也是相同的情況。
當全域性變數和區域性變數同名時,在區域性範圍內全域性變數被「遮蔽」,不再起作用。或者說,變數的使用遵循就近原則,如果在當前作用域中存在同名變數,就不會向更大的作用域中去尋找變數。
2) func3() 輸出 10,使用的是全域性變數,因為在 func3() 函式中不存在區域性變數 n,所以編譯器只能到函式外部,也就是全域性作用域中去尋找變數 n。
3) 由包圍的**塊也擁有獨立的作用域,printf() 使用它自己內部的變數 n,輸出 40。
4) c語言規定,只能從小的作用域向大的作用域中去尋找變數,而不能反過來,使用更小的作用域中的變數。對於 main() 函式,即使**塊中的 n 離輸出語句更近,但它仍然會使用 main() 函式開頭定義的 n,所以輸出結果是 30。
標準c語言(ansi c)共定義了15 個頭檔案,稱為「c標準庫」,所有的編譯器都必須支援,如何正確並熟練的使用這些標準庫,可以反映出乙個程式設計師的水平。
C語言中的可變數引數巨集和 說明
有時我們寫程式可能會定義許多debug模式下的除錯列印資訊巨集來替代原有的列印函式,這時就會出現編寫可變數引數巨集的寫法問題,下面就摘要性的寫一下,執行及除錯環境為rh linux 9.0 gcc 3.2.2 首先在gcc中,對可變數引數巨集的支援要強的多,一般我們可以這麼寫 define macr...
C語言 C語言常量和變數
目錄 常量 定義 分類 特殊字元型常量 變數 定義 定義變數 變數的使用 變數使用注意 變數常見問題 1.常量 定義 常量表示固定的資料。分類 整型常量 如6,7,2 浮點型常量 如6.3,6.3,5.82f 注 實型常量 小數 分為單雙精度 float double 字元常量 如 7 a h 不能...
C語言 C語言常量和變數
目錄 常量 定義 分類 特殊字元型常量 變數 定義 定義變數 變數的使用 變數使用注意 變數常見問題 1.常量 定義 常量表示固定的資料。分類 整型常量 如6,7,2 浮點型常量 如6.3,6.3,5.82f 注 實型常量 小數 分為單雙精度 float double 字元常量 如 7 a h 不能...