c語言的引數和變數

2022-09-13 13:42:12 字數 2243 閱讀 5845

在函式定義**現的引數可以看做是乙個佔位符,它沒有資料,只能等到函式被呼叫時接收傳遞進來的資料,所以稱為形式引數,簡稱形參。

函式被呼叫時給出的引數包含了實實在在的資料,會被函式內部的**使用,所以稱為實際引數,簡稱實參。

形參和實參的功能是傳遞資料,發生函式呼叫時,實參的值會傳遞給形參。

形參和實參有以下幾個特點:

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),它的作用域僅限於函式內部, 離開該函式後就是無效的,再使用就會報錯。

1

int f1(inta)5

intmain()

在所有函式外部定義的變數稱為全域性變數(global variable),它的作用域預設是整個程式,也就是所有的原始檔,包括 .c 和 .h 檔案。

1

int 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 2

3int 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 不能...