本質(zhì)上說,C語言的參數(shù)傳遞都是傳值的,所以實(shí)參都不會(huì)改變。有一種情況可以理解成實(shí)參的改變:如果形參接收的是指針,而實(shí)參傳遞的是地址,在函數(shù)內(nèi)部對(duì)該地址中的內(nèi)容進(jìn)行了改變,看起來就是修改了實(shí)參的值。
成都創(chuàng)新互聯(lián)公司專注于文安網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供文安營(yíng)銷型網(wǎng)站建設(shè),文安網(wǎng)站制作、文安網(wǎng)頁(yè)設(shè)計(jì)、文安網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造文安網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供文安網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
調(diào)用函數(shù),只能改變指針指向的內(nèi)存空間的內(nèi)容,不能改變實(shí)參指針變量的值。我覺得題主對(duì)指針變量,還算有一點(diǎn)了解。指針變量,其實(shí)也就是一個(gè)變量,但它的值是一塊內(nèi)存的地址。
形參和實(shí)參如果都是地址(即指針)時(shí),會(huì)發(fā)生改變形參即可改變實(shí)參的情況,因?yàn)檫@時(shí)形參和實(shí)參實(shí)際上是對(duì)應(yīng)同一段內(nèi)存的數(shù)據(jù)。
傳遞值的時(shí)候不影響實(shí)參 傳遞指針的時(shí)候能夠影響實(shí)參。
c語言中形參與實(shí)參的關(guān)系是:形參是實(shí)參的值副本。無論參數(shù)的類型是什么,傳遞到子函數(shù)中的形參只是實(shí)參的值。所以,在改變形參變量自身的值時(shí),是與實(shí)參無關(guān)的。換句話說,形參的改變不會(huì)影響到實(shí)參。
C所有的函數(shù)調(diào)用都是將實(shí)參的值“拷貝”給形參,所以指針也不例外。函數(shù)中改變形參指針的值改變的只是形參指針的指向,函數(shù)退出后都銷聲匿跡了,與實(shí)參指針無關(guān)。
1、void f(int *q){ q=(int *)0XFFFFFFFF; //這里修改的是函數(shù)中形參q這個(gè)臨時(shí)變量的值。
2、void f(int *q){ q=(int *)0XFFFFFFFF;} 你這樣改的是q的值 在這種情況下改值 必須知道需要改的值的變量地址才行。
3、但,如果參數(shù)類型是指針類型,則可以通過對(duì)指針變量所指向的地址中的數(shù)據(jù)進(jìn)行修改,達(dá)到改變實(shí)參地址中的數(shù)據(jù)目的。
4、函數(shù)的形參是值傳遞,形參只是實(shí)參的一個(gè)值的拷貝,修改形參不會(huì)影響到實(shí)參的值。因此,scanf中必須傳遞一個(gè)指向?qū)崊⒌闹羔?,也就是?shí)參的地址,通過它去修改實(shí)參的值。如果直接傳遞實(shí)參的值是無法通過輸入給實(shí)參賦值的。
5、可以傳遞指針作為參數(shù)。如:使用swap(a,b)實(shí)現(xiàn)交換a、b兩個(gè)實(shí)參的值。
1、形參和實(shí)參如果都是地址(即指針)時(shí),會(huì)發(fā)生改變形參即可改變實(shí)參的情況,因?yàn)檫@時(shí)形參和實(shí)參實(shí)際上是對(duì)應(yīng)同一段內(nèi)存的數(shù)據(jù)。
2、這里實(shí)參自然不會(huì)變化,你這么理解,實(shí)參是實(shí)際參與到函數(shù)計(jì)算中的參數(shù),但你這里函數(shù)的返回值中,并不包含輸入實(shí)參的變化,固實(shí)參是無變化的。
3、c語言中數(shù)組名作為實(shí)參傳給被調(diào)用的函數(shù)時(shí),形參獲得的是數(shù)組的起始地址。還是用例子說話吧。
4、c語言中形參與實(shí)參的關(guān)系是:形參是實(shí)參的值副本。無論參數(shù)的類型是什么,傳遞到子函數(shù)中的形參只是實(shí)參的值。所以,在改變形參變量自身的值時(shí),是與實(shí)參無關(guān)的。換句話說,形參的改變不會(huì)影響到實(shí)參。
5、實(shí)參是不會(huì)受到形參的影響的。就算傳指針,也只是改變指針指向的值而已。