1、swap(a = x, b = y),之后在swap中所有的操作都是針對(duì)a和b進(jìn)行的,與x和y無(wú)關(guān),所以x和y的值在swap執(zhí)行后依然保持不變。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比莒縣網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式莒縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋莒縣地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
2、值傳遞:指在調(diào)用函數(shù)時(shí)將變量的值傳給函數(shù)。地址傳遞:指在調(diào)用函數(shù)時(shí)將變量的地址傳給函數(shù)。指針:就是一個(gè)變量的地址。
3、a++時(shí)自然也對(duì)x++,當(dāng)函數(shù)調(diào)用結(jié)束,指針a釋放掉,x的值此時(shí)已經(jīng)發(fā)生了變化。這就是兩者不同,地址傳遞的參數(shù)都是指針類型,于數(shù)值傳遞不一樣。
4、值傳遞是形參拷貝實(shí)參的值進(jìn)行操作,過(guò)程中沒(méi)有改變實(shí)參的值,數(shù)組傳遞是將數(shù)組的首地址傳入,操作時(shí)使用地址偏移的方式取值,操作中會(huì)改變其地址處的值,但首地址本身不會(huì)因?yàn)楦淖兌淖儭?/p>
5、C語(yǔ)言在形參和實(shí)參之間傳遞的不僅是值傳遞,也包括地址傳遞的。細(xì)節(jié)如下:C語(yǔ)言函數(shù)參數(shù)傳遞包括按值傳遞和按地址傳遞兩種;當(dāng)形式參數(shù)是數(shù)組、指針時(shí)都是使用的按地址傳遞。
因此在數(shù)組名作函數(shù)參數(shù)時(shí)所進(jìn)行的傳送只是地址的傳送, 也就是說(shuō)把實(shí)參數(shù)組的首地址賦予形參數(shù)組名。形參數(shù)組名取得該首地址之后,也就等于有了實(shí)在的數(shù)組。實(shí)際上是形參數(shù)組和實(shí)參數(shù)組為同一數(shù)組,共同擁有一段內(nèi)存空間。
屬于地址傳遞,在函數(shù)里修改的話,將直接影響調(diào)用方的數(shù)值。這是因?yàn)閿?shù)組名代表這個(gè)數(shù)組的首地址,不過(guò)是靜態(tài)不可更改的而已。在函數(shù)里用引用[i]下標(biāo)時(shí),就是找到這個(gè)數(shù)組第i號(hào)元素的地址進(jìn)行修改的。所以是第于是地址傳遞。
傳數(shù)組給一個(gè)函數(shù),數(shù)組類型自動(dòng)轉(zhuǎn)換為指針類型,因而傳的實(shí)際是地址。void func(int array[10])void func(int array[])void func(int *array)所以以上三種函數(shù)聲明完全等同。實(shí)際情況是,數(shù)組做參數(shù),完全無(wú)法按值傳遞。
下面例子,作為 指針傳遞 和 行指針傳遞。
如果是只傳數(shù)組的數(shù)值的話,是做不到的。如果傳數(shù)組中某個(gè)值的地址的話,是可以做到的。簡(jiǎn)單來(lái)說(shuō):只能以傳 數(shù)組地址 的方法來(lái)實(shí)現(xiàn)。
地址傳遞,函數(shù)調(diào)用返回以后,函數(shù)對(duì)相應(yīng)地址變量值的修改可以影響變量值。
屬于地址傳遞。因?yàn)閿?shù)組名的本質(zhì)是一個(gè)地址常量。字符串是字符數(shù)組,我們?cè)趕canf()中,輸入字符串時(shí),不需要用取地址符&,因?yàn)樽址兞棵旧硎堑刂?。如:char name[20];scanf(%s,name);即可。
C語(yǔ)言中,數(shù)組名作為函數(shù)參數(shù),屬于數(shù)組參數(shù)傳遞。在VB0中,允許使用數(shù)組作為實(shí)參傳遞到子過(guò)程的形參中,數(shù)組傳遞必須采用地址傳遞的方式來(lái)傳遞參數(shù)。
舉個(gè)栗子:有100個(gè)房間,從0到99編號(hào),每個(gè)房間放在不同的食材。交換兩個(gè)變量的值 只需要告訴你把A房間和B房間的東西調(diào)換,你不需要知道房間里面放的是什么。