① c語言簡單判斷題:在標准C語言中,函數參數傳遞是單向傳遞,即由實參傳遞給形參.
值傳遞。
實參與形參數據傳遞有兩種方式:值傳遞與地址傳遞。
地址傳遞的形式為
int
&a=b;
也就是我們所說的引用,但引用只有c++中有,所以c語言都是值傳遞的。
有些人有誤解:認為c語言的int
*p=&a;不也是按地址傳遞嗎?其實不是這樣的。
深入理解值傳遞與地址傳遞就會發現:
值傳遞是:把實參的值傳給一個變數(形參)。所以int
*p=&a也是把a的地址值傳給了指針變數p
地址傳遞是:直接把地址傳進來,沒有賦給任何變數,這樣在函數體內對形參的操作也就是對實參地操作。有這種功能的也就是引用(&)了。
② C語言規定,調用一個函數時,實參變數和形參變數之間的數據傳遞方式是什麼
函數只有兩種傳遞方式:
1、值傳遞,又稱單向傳遞,只能把實參數值傳給形參 ,形參最後的結果不影響實參(形參改變大小 ,實參大小不變)。
2、址傳遞,通過指針,把實參的地址給形參,形參的大小可以影響實參。
(2)c語言單向傳遞是什麼意思擴展閱讀:
實參變數和形參變數之間的調用過程
1、函數的形參列於函數聲明中,在函數定義的函數體內使用,在未出現函數調用時,形參不佔內存中的存儲單元。
2、將實參的值傳遞給形參,當函數被調用時,實參列在函數名後面的括弧里,執行函數調用時,實參被傳遞給形參。
3、在執行函數期間,由於形參已經有值,可以利用其進行相關運算。
4、通過return語句將函數值帶回到主調函數。
5、調用結束,形參單元被釋放。實參單元仍保留並維持原值(值傳遞)。
③ c語言,關於形參實參單向值傳遞!
分兩種情況給你對比一下
函數形參用普通變數,當函數被調用的時候,實參的值被賦值給了形參,函數被調用的時候開辟了內存空間給形參,也就是數據被復制了,然後函數開始處理形參的數據,這個時候和實參的數據是沒有任何關系了。當函數結束的時候形參的內存空間是要被釋放,或者說刪除的,所以對實參啥也沒干,只是拿了實參的數據復制了一份,然後對復制的那一份算的很起勁,結果最後刪除了,啥也沒干。
函數形參用指針,當函數被調用的時候,實參指針,也就是把地址復制了一份給形參,但是函數中我們用取內容符號'*'對形參指針所指的內容,同時也是實參指針所指的同一份內容進行處理,函數結束的時候形參指針的值是被釋放了,可是形參指針,同時也是實參指針所指的內容還在。
感覺講的蠻清楚了,不懂再追問。
④ c語言指針為什麼形參q1跟q2交換了,實參p1和p1也交換了,不是單向傳遞的嗎
C語言的「單向傳遞」是指函數實參值傳遞給形參值,不能反過來傳遞。
但是,在這個題目里,你把a和b的地址傳遞給swap函數的兩個形參,因此調用swap(p1,p2);之後,swap的形參q1指向a,q2指向b,互換q1和q2所指向變數的值,自然會互換a和b的值。
這中間沒有涉及反過來(形參值傳遞給實參值)的傳遞方式,僅僅在調用swap函數時,p1值傳遞給q1,p2值傳遞給q2,而指針的值就是它們所指向變數的地址。
⑤ c語言中,實參向形參傳遞時,什麼時候用單向值傳遞,什麼時候用地址傳遞
C語言在形參和實參之間傳遞的不僅是值傳遞,也包括地址傳遞的。
細節如下:
C語言函數參數傳遞包括按值傳遞和按地址傳遞兩種;
當形式參數是數組、指針時都是使用的按地址傳遞。
⑥ c語言 max函數
max里的叫形參,可以隨便用哪個都一樣的,大概你是新手,不知道什麼是形參和實參吧~
形參與實參的區別:
高級語言在設計程序模塊時,模塊名定義後,緊跟其後所定義的參數(括弧內)被稱為形參(也稱虛參)。當該模塊被調用時,在主調模塊中,出現在被調用的模塊名後的參數被稱為實參。實參代替虛參的過程被稱為虛、實結合,也稱換參。多數高級語言的換參是由編譯系統來完成,比如C語言和FORTRAN語言亦是如此。BASIC語言的換參則是由程序設計人員來完成的。如果只允許實參向虛參傳遞,則被稱為「單向傳遞」,C語言的變數類虛、實結合即是「單向傳遞」。如果同時允許虛參向實參傳遞,這種傳遞被稱為「雙向傳遞」,FORTRAN
語言定義的子程序即是如此。
當C語言的形參為數組時,形參不另闢存儲單元,形參與實參共用內存存儲單元。這樣,可以節省內存。
C語言在定義函數的同時,對於有參函數,也同時定義了形參。在調用該函數的同時,也指明了實參。實參與形參在內存分別佔有兩套不同的存儲單元(數組除外),但是形參只有在函數被調用過程中才分配存儲單元,調用結束後形參佔用的單元被釋放。數組元素作為實參時,也做為變數來處理。
⑦ C語言判斷題:在標准C語言中,函數參數傳遞是單向傳遞,即由實參傳遞給形參.
C語言中,舉個例子swap(int a,int b)函數。你的main()函數中調用swap(x,y)。是把x,y的值傳過去,傳給a,b後。x,y和a,b的聯系就斷了。所以叫做單向傳遞。
C++有一種方式叫做引用,例如:int &i=x; 可以理解為i是x的別名,地址還是相同的。這時候在swap()函數中,x,y是真正地參與到運算中去。並把結果返回調用函數。所以這個叫做雙向傳遞。
這是我的理解,如果不對,請見諒。
⑧ 請c語言高手們賜教:什麼時候應注意函數實參河和形參的單向傳遞問題
C語言中有兩種傳遞方式,一個是值傳遞,另一個是地址(指針)傳遞。
值傳遞就是單向傳遞。它只給從
實參
傳遞給
形參
,而形參經過改變後不會傳遞給實參,對
函數
而言,就是
參數
經過主調用函數傳遞給了
被調用函數
,而我們知道,被調用函數除了用return
語句
返回一個值外,其餘的值就不可以返回了。所以說值傳遞是單向傳遞。
地址傳遞則解決了值傳遞只能返回一個值的尷尬局面。地址傳遞通過把傳入參數的地址以指針方式傳遞給形參,進而直接對傳入參數的內在單元進行修改,所以,這種傳遞方式可以徹底改變傳入參數,不受被調用函數只能返回一個值的限制。
由上面,所以,當你希望通過調用函數並返回多個數值時就要用地址傳遞的方式,其餘就可以選用值傳遞了。
下面這道題採用值傳遞顯然達不到設計者的要求。
void
f(int
v,int
w)
{
int
t;
t=v,v=w,w=t;
}
main()
{
int
x=1,y=3,z=2;
if(x>y)
f(x,y);
else
if
(y>z)
f(y,z);
else
f(x,z);
printf("%d,%d,%d\n",x,y,z);
}
因為上面的
程序
採用了值傳遞,而傳入的參數經f函數排大小後,不可能再傳回去了,這就是單向傳遞。
希望,編寫時候注意。