第44課 函式引數的秘密(上)

2022-02-21 10:46:18 字數 545 閱讀 5091

(1)函式引數在本質上與區域性變數相同,都在棧上分配空間

(2)函式引數的初始值是函式呼叫時的實參值

(3)c標準只規定了 必須要將每個實參的具體值求出來之後才能進行函式呼叫,並沒有規定函式引數的求值順序,求值順序依賴於編譯器的實現

比如void func(引數表示式1,引數表示式2,引數表示式3);

這三個引數表示式哪乙個先計算依賴於具體的編譯器。 

【函式引數的求值順序】

1 #include 2

3int func(int i, intj)4

89intf()

1014

15int

g()16

2021

intmain()

22

gcc編譯器的輸出結果:(1)(2)

(3)

C 44 函式引數的秘密 (上)

下面的程式輸出什麼?為什麼呢?int k 1 printf d,d n k k include int func int i,int j int main 輸出 gcc i 2,j 1 3特別說明 此處暫時沒有找到有其它求值順序的編譯器來輸出說明。由於c語言未明確規定函式引數的求值順序,其交由具體的...

c 第7課 函式的引數

c 在函式宣告的時候可以提供乙個預設值,必須只能在函式宣告中指定 include inta int x 1 此處為函式宣告,可以在這裡給函式提供乙個預設值 如果int x未賦乙個初始值,a 呼叫的時候一定要有引數 intmain inta int x 此處為 函式定義 不能在此處給函式提供預設值 這...

第7課 函式引數的擴充套件

a.c 中可以在函式宣告時為引數提供預設值 b.當函式呼叫時沒有提供引數的值,則使用預設值 c,引數的預設值必須在函式宣告中指定 注意 函式的預設值只能賦值一次,或是在宣告中或是在定義中 有宣告在宣告中定義,沒有時可在定義中定義 a.引數的的預設值必須從右向左提供 函式呼叫時從左向右匹配 b.函式呼...