但是,數(shù)組做形參時(shí),C語(yǔ)言支持中括號(hào)里面寫入數(shù)字,如array[0]、array[1]或array[10]等,但它們都是一樣的,作用與寫成array[]完全相同。
目前創(chuàng)新互聯(lián)建站已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、祁東網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
int (*arr)[m];所以,傳遞二維數(shù)組作為參數(shù),實(shí)際上就是傳遞了一個(gè)指針。
一般來(lái)數(shù)參數(shù)的傳遞是值傳遞,也就是說(shuō)實(shí)參傳給形參,形參發(fā)生改變時(shí)實(shí)參并不會(huì)改變,(單向)但是數(shù)組在傳遞的時(shí)候是地址傳遞,只要形參發(fā)生了變化,實(shí)參也會(huì)發(fā)生變化(雙向)。
c語(yǔ)言中數(shù)組名作為實(shí)參傳給被調(diào)用的函數(shù)時(shí),形參獲得的是數(shù)組的起始地址。還是用例子說(shuō)話吧。
int a[3][4];int **p = a;//錯(cuò)誤 這個(gè)代碼的錯(cuò)誤之處在于a是一個(gè)數(shù)組,它的成員也是數(shù)組,所以a叫做“數(shù)組的數(shù)組”——C中嚴(yán)格說(shuō)來(lái)沒(méi)有二維數(shù)組。
b[],int n)/*其中函數(shù)參數(shù)有兩個(gè):一個(gè)是數(shù)組,形參的形式是b[],它在調(diào)用是接受具體數(shù)組的首地址;另一個(gè)形參是N,它在調(diào)用時(shí)數(shù)組元素的具體個(gè)數(shù)。
在C里面 是無(wú)法做到形參改變 實(shí)參值同步改變的。只能通過(guò)傳地址的方式 即參數(shù)類型為指針 這樣 形參指向空間修改,可以使得實(shí)參指向空間同步修改,因?yàn)槭峭粔K內(nèi)存區(qū)域。另外,在C++中,可以通過(guò)引用傳參,來(lái)實(shí)現(xiàn)你說(shuō)的目的。
void fun(a[]){ a[0]=3;a[1]=4;} int main(){ int a[2]={1,2};fun(a);printf(%d %d,a[0],a[1]);} 結(jié)果為3 4。
也就是說(shuō),在函數(shù)的形參列表里指定數(shù)組的成員個(gè)數(shù)是沒(méi)有意義的,所以,你傳入的實(shí)參究竟是比10多還是比10少對(duì)于調(diào)用函數(shù)而言都是合法的。
形參和實(shí)參如果都是地址(即指針)時(shí),會(huì)發(fā)生改變形參即可改變實(shí)參的情況,因?yàn)檫@時(shí)形參和實(shí)參實(shí)際上是對(duì)應(yīng)同一段內(nèi)存的數(shù)據(jù)。
因?yàn)槭侵骱瘮?shù)調(diào)用排序函數(shù) 主函數(shù)的是實(shí)參調(diào)用排序函數(shù)的形參 把實(shí)參帶入到對(duì)應(yīng)形參的排序函數(shù)內(nèi)進(jìn)行排序 最終目的是排序?qū)崊⒍皇切螀?形參只是中間量而已。
,你開(kāi)始學(xué)的是值傳遞,即形參把實(shí)參的值復(fù)制過(guò)去,他們根本上是兩個(gè)不一樣的變量,只是值相同而已,所以對(duì)形參的任何操作不影響實(shí)參。
1、而數(shù)組做形參時(shí),只是把實(shí)參的首地址傳給形參,后面對(duì)形參的元素的賦值和改寫,直接對(duì)實(shí)參的數(shù)組元素進(jìn)行了賦值和改寫。
2、)用數(shù)組元素作函數(shù)參數(shù)不要求形參也必須是數(shù)組,但是用數(shù)組名作函數(shù)參數(shù)時(shí),則要求形參和相對(duì)應(yīng)的實(shí)參都是類型相同的數(shù)組。
3、C編譯對(duì) 形參 數(shù)組 大小 不做檢查,只是將實(shí) 參數(shù) 組的首地址傳給形參數(shù)組,因此,實(shí)參 不論多大都不會(huì)出現(xiàn)形參溢出。在 定義 形參時(shí)可以不指定大小,而只在 后面 加方 括弧 。
4、在C語(yǔ)言中,用數(shù)組名作為函數(shù)調(diào)用時(shí)的實(shí)參,實(shí)際上傳遞給形參的是首地址。因?yàn)閿?shù)組名傳遞的是數(shù)組的地址也就是第一個(gè)元素的地址。
1、需要注意當(dāng)形參和實(shí)參不是指針類型時(shí),在該函數(shù)運(yùn)行時(shí),形參和實(shí)參是不同的變量,他們?cè)趦?nèi)存中位于不同的位置,形參將實(shí)參的內(nèi)容復(fù)制一份,在該函數(shù)運(yùn)行結(jié)束的時(shí)候形參被釋放,而實(shí)參內(nèi)容不會(huì)改變。
2、在C語(yǔ)言中,用數(shù)組名作為函數(shù)調(diào)用時(shí)的實(shí)參,實(shí)際上傳遞給形參的是首地址。因?yàn)閿?shù)組名傳遞的是數(shù)組的地址也就是第一個(gè)元素的地址。
3、若用數(shù)組名作為函數(shù)的實(shí)參,傳遞給形參的是數(shù)組的首地址。數(shù)組首地址數(shù)組第一個(gè)元素的地址。數(shù)組名字本身就是一個(gè)指針,它是一個(gè)指針常量,指向的地址不變。
4、實(shí)際上是形參數(shù)組和實(shí)參數(shù)組為同一數(shù)組,共同使用一段內(nèi)存空間。此外,需注意以下幾點(diǎn),(1)如果形參是數(shù)組形式,則實(shí)參必須是實(shí)際的數(shù)組名,如果實(shí)參是數(shù)組名,則形參可以是同樣維數(shù)的數(shù)組名或指針。