C語言中的引數傳遞

2021-07-24 20:40:27 字數 609 閱讀 1849

問:你認為這個函式是在做什麼呀?

答:好像是對引數 x,y的值對調吧?

請往下看,我想利用這個函式來完成對a,b兩個變數值的對調,程式如下:

void main()

我問:exchg1 ()裡頭的  printf(「x=%d,y=%d\n」,x,y)語句會輸出什麼啊?

我再問:exchg1 ()後的  printf(「a=%d,b=%d\n」,a,b)語句輸出的是什麼?

程式輸出的結果是:

x=6 , y=4

a=4 , b=6  //為什麼不是a=6,b=4呢?如果你也會有這個疑問,那是因為你跟本就不知實參a,b與形參x,y的關係了。

exchg1(a,b)時,所完成的操作**如下所示。

int x=a;//←

int y=b;//←注意這裡,頭兩行是呼叫函式時的隱含操作

上面是呼叫函式時的兩個隱含動作。它確實存在, 現在我只不過把它顯式地寫了出來而已。問題一下就清晰起來啦。後面就不用我說了吧。 僅僅是值的傳遞。

C語言中引數傳遞優化

我以前看了某位大大的分析,多引數函式呼叫會比單一引數更加花費cpu時間,因此使用結構體封裝引數。但是通過分析得到了自己的見解,關於這點是不能一概而論的。仔細檢視win32 api你就會發現,只是擁有眾多引數的時候才會使用結構體封裝,引數少的時候,不進行封裝的,因為你給結構體中的元素賦值也需要花費cp...

C語言中引數的傳遞方式

c語言中引數的傳遞方式一般存在兩種方式 一種是通過棧的形式傳遞,另一種是通過暫存器的方式傳遞的。這次,我們只是詳細描述一下第一種引數傳遞方式,另外一種方式在這裡不做詳細介紹。首先,我們看一下,下面乙個簡單的呼叫例程 int add int a,int b,int c void main 借助以上例程...

c語言和 語言中函式引數的傳遞

在呼叫乙個函式時進行引數傳遞 不只是講引數列表裡的引數,包括函式返回值的引數傳遞 其本質上進行的工作都是一樣的,即使用實參初始化形參。實參與形參本質上是兩個完全不同的變數,它們之間並沒有更深入的聯絡,僅僅只是變數與初始值的關係而已。很普通的那種,大家都了解的差不多。在此處需要強調一下,所謂傳值,其實...