C語言函數(shù)參數(shù)傳遞包括按值傳遞和按地址傳遞兩種;當(dāng)形式參數(shù)是數(shù)組、指針時都是使用的按地址傳遞。
我們擁有10余年網(wǎng)頁設(shè)計和網(wǎng)站建設(shè)經(jīng)驗,從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁設(shè)計師為您提供的解決方案。為企業(yè)提供網(wǎng)站制作、成都做網(wǎng)站、微信開發(fā)、小程序設(shè)計、手機(jī)網(wǎng)站開發(fā)、H5技術(shù)、等業(yè)務(wù)。無論您有什么樣的網(wǎng)站設(shè)計或者設(shè)計方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設(shè)計服務(wù)并滿足您的需求。
其實c語言有兩種形參和實參之間傳值方式,一種是傳值,一種是傳這個值的地址,但實際上地址也是一個值,對應(yīng)計算機(jī)存儲空間上的編號,所以統(tǒng)稱為傳值。
其實指針也是傳值的。傳指針是可以修改指向的區(qū)域,但對指針的實參沒有任何影響的。
函數(shù) 實參 與 形參 之間的數(shù)據(jù)傳遞方式是(值傳遞)傳遞方式,在C語言中,數(shù)據(jù)傳遞方式有值傳遞和引用傳遞,值傳遞:傳值,實際是把實參的值賦值給行參,相當(dāng)于copy。那么對行參的修改,不會影響實參的值 。
b u b b l e _ s o r t函數(shù)的最后一個參數(shù)是指向函數(shù)的指針,即是函數(shù)的入口地址。如果smaller=1的話,代入i n t (*cmp ) ( int , i n t ) ),本身就不對。
指針作參數(shù)實質(zhì)就是把整個字符串賦給指針,找到了字符串的首地址,自然就相當(dāng)于傳的是整個字符串內(nèi)容。如果,這個你沒理解好。下面這座做法就比較直觀一點(diǎn)了。但是,顯然相對繁瑣。
如果使用指針作為參數(shù)就是地址傳遞,否則只是值傳遞。你可以看下下面的這個函數(shù):void modify(int a){ a++;} void main(){ int a=5;modify(a);printf(%d,a);} 這個程序的答案還是5。
因為使用地址作參數(shù),那么傳參就是傳地址啊,當(dāng)然要傳u_x即&x啦 另外,對指針來說,定義的時候加*是為了區(qū)別指針變量與非指針變量,如果函數(shù)定義中的int *a,int *b的兩個星號去掉,那就說明形參變量不是指針類型了。
1、形參是指針,實參就應(yīng)該是對應(yīng)數(shù)據(jù)類型的地址。
2、可以的,還可以直接寫成:A(NULL);調(diào)用程序只是通過參數(shù)向A函數(shù)傳送一個地址,讓A將這個地址賦值給臨時變量a來使用而已,但無論A如何折騰臨時變量a,都不會影響到調(diào)用者,除非這個地址指向調(diào)用者開設(shè)的變量。
3、c語言中形參與實參的關(guān)系是:形參是實參的值副本。無論參數(shù)的類型是什么,傳遞到子函數(shù)中的形參只是實參的值。所以,在改變形參變量自身的值時,是與實參無關(guān)的。換句話說,形參的改變不會影響到實參。
4、以上函數(shù)調(diào)用時實參就是指針變量,不需要改。
5、字符串a(chǎn)bc的值是abc在內(nèi)存中的地址,你交換的也是地址,沒錯啊。
6、沒錯是你的運(yùn)氣好,這樣的情況下,程序崩潰幾乎是必然的。不要使用這樣的做法。