數(shù)組作為參數(shù)是按地址傳遞的 數(shù)組名就是數(shù)組的首地址。因此在數(shù)組名作函數(shù)參數(shù)時(shí)所進(jìn)行的傳送只是地址的傳送, 也就是說把實(shí)參數(shù)組的首地址賦予形參數(shù)組名。形參數(shù)組名取得該首地址之后,也就等于有了實(shí)在的數(shù)組。
網(wǎng)站的建設(shè)創(chuàng)新互聯(lián)公司專注網(wǎng)站定制,經(jīng)驗(yàn)豐富,不做模板,主營網(wǎng)站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設(shè)計(jì)體驗(yàn)!已為成都廣告制作等企業(yè)提供專業(yè)服務(wù)。
數(shù)組在C++中是以指針的形式進(jìn)行傳遞的。我們可以把形參寫成指針形式,也可以寫成數(shù)組形式,但本質(zhì)上傳遞的都是指針。
實(shí)際情況是,數(shù)組做參數(shù),完全無法按值傳遞。這是由C/C++函數(shù)的實(shí)現(xiàn)機(jī)制決定的。
聲明函數(shù)和實(shí)現(xiàn)函數(shù)要一致。kid bii(struct kid c) 這個(gè)定義一個(gè)返回kid類型的函數(shù),形參是kid 不是指針。
數(shù)組可定義為全局變量,函數(shù)直接調(diào)用。數(shù)組可定義為局部變量,再通過參數(shù)傳遞到函數(shù)中調(diào)用(實(shí)參傳數(shù)組名,表示數(shù)組首地址,也可通過指針或數(shù)組名+數(shù)字來傳遞數(shù)組局部地址)。
1、先看一個(gè)傳遞二維數(shù)組的例子:編譯:程序看著沒有任何問題,但是編譯器通不過,報(bào)錯(cuò)在處理二維數(shù)組參數(shù)a的時(shí)候,類型不兼容。
2、在C語言中可以用二維數(shù)組作為實(shí)參或者形參。
3、int main(){ int i, j;int num[5][5];//二維數(shù)組 for(i = 0; i 5; i++)//行 { for(j = 0; j 5; j++)//列 { scanf(%d,&num[i][j]); //輸入25個(gè)數(shù)據(jù),空格分隔,最后回車。
4、我們首先定義一個(gè)二級(jí)指針和一個(gè)行列變量[int ** array,row,column;]。然后我們編寫進(jìn)入行和列的語句,代碼如圖所示。接下來我們可以用一維數(shù)組打開一維一維數(shù)組。
5、不可能達(dá)到目的。因?yàn)镃語言中沒有引用這類型,C++才有。另,C/C++都不支持傳遞數(shù)組,只能傳遞數(shù)組的首元素或行指針,所以即使是C++,也只能傳遞數(shù)組指針的引用,而不可能傳遞數(shù)組的引用,因?yàn)閿?shù)組沒有引用。
數(shù)組作為參數(shù)是按地址傳遞的 數(shù)組名就是數(shù)組的首地址。因此在數(shù)組名作函數(shù)參數(shù)時(shí)所進(jìn)行的傳送只是地址的傳送, 也就是說把實(shí)參數(shù)組的首地址賦予形參數(shù)組名。形參數(shù)組名取得該首地址之后,也就等于有了實(shí)在的數(shù)組。
實(shí)際情況是,數(shù)組做參數(shù),完全無法按值傳遞。這是由C/C++函數(shù)的實(shí)現(xiàn)機(jī)制決定的。
屬于地址傳遞,在函數(shù)里修改的話,將直接影響調(diào)用方的數(shù)值。這是因?yàn)閿?shù)組名代表這個(gè)數(shù)組的首地址,不過是靜態(tài)不可更改的而已。在函數(shù)里用引用[i]下標(biāo)時(shí),就是找到這個(gè)數(shù)組第i號(hào)元素的地址進(jìn)行修改的。所以是第于是地址傳遞。