新聞中心
C語言里可以將數(shù)組作為參數(shù),以值的方式傳遞給函數(shù)嗎?
1、實(shí)際情況是,數(shù)組做參數(shù),完全無法按值傳遞。這是由C/C++函數(shù)的實(shí)現(xiàn)機(jī)制決定的。
創(chuàng)新互聯(lián)建站主營獨(dú)山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App定制開發(fā),獨(dú)山h5小程序開發(fā)搭建,獨(dú)山網(wǎng)站營銷推廣歡迎獨(dú)山等地區(qū)企業(yè)咨詢
2、C語言中,數(shù)組名作為函數(shù)參數(shù),屬于數(shù)組參數(shù)傳遞。在VB0中,允許使用數(shù)組作為實(shí)參傳遞到子過程的形參中,數(shù)組傳遞必須采用地址傳遞的方式來傳遞參數(shù)。
3、在C語言中,用數(shù)組名作為函數(shù)調(diào)用時(shí)的實(shí)參,實(shí)際上傳遞給形參的是首地址。因?yàn)閿?shù)組名傳遞的是數(shù)組的地址也就是第一個(gè)元素的地址。
4、下面例子,作為 指針傳遞 和 行指針傳遞。
5、因此在數(shù)組名作函數(shù)參數(shù)時(shí)所進(jìn)行的傳送只是地址的傳送, 也就是說把實(shí)參數(shù)組的首地址賦予形參數(shù)組名。形參數(shù)組名取得該首地址之后,也就等于有了實(shí)在的數(shù)組。實(shí)際上是形參數(shù)組和實(shí)參數(shù)組為同一數(shù)組,共同擁有一段內(nèi)存空間。
C語言中,數(shù)組做函數(shù)參數(shù)如何才能按值傳遞?
數(shù)組作為參數(shù)是按地址傳遞的 數(shù)組名就是數(shù)組的首地址。因此在數(shù)組名作函數(shù)參數(shù)時(shí)所進(jìn)行的傳送只是地址的傳送, 也就是說把實(shí)參數(shù)組的首地址賦予形參數(shù)組名。形參數(shù)組名取得該首地址之后,也就等于有了實(shí)在的數(shù)組。
back,在運(yùn)行程序過程中,把實(shí)際參數(shù)的值傳給形式參 數(shù),這就是函數(shù)參數(shù)的傳遞。形參和實(shí)參可能不只一個(gè),如果多于一個(gè)時(shí),函數(shù)聲明、調(diào)用、定義的形式都要一一對應(yīng), 不僅個(gè)數(shù)要對應(yīng),參數(shù)的數(shù)據(jù)類型也要對應(yīng)。
在C語言中可以用二維數(shù)組作為實(shí)參或者形參。
C語言技巧:怎樣把數(shù)組作為參數(shù)傳遞給函數(shù)
1、數(shù)組名就是數(shù)組的首地址。因此在數(shù)組名作函數(shù)參數(shù)時(shí)所進(jìn)行的傳送只是地址的傳送, 也就是說把實(shí)參數(shù)組的首地址賦予形參數(shù)組名。形參數(shù)組名取得該首地址之后,也就等于有了實(shí)在的數(shù)組。
2、傳數(shù)組給一個(gè)函數(shù),數(shù)組類型自動轉(zhuǎn)換為指針類型,因而傳的實(shí)際是地址。void func(int array[10])void func(int array[])void func(int *array)所以以上三種函數(shù)聲明完全等同。實(shí)際情況是,數(shù)組做參數(shù),完全無法按值傳遞。
3、函數(shù)中用二維數(shù)組作為形參,函數(shù)聲明中可以指定所有維數(shù)的大小,也可以省略第1維的維數(shù)如:void f(int array[3][10]); //正確 void f(int array[][10]); //正確上面的兩種二維數(shù)組形參表示都是正確的。
4、因?yàn)閿?shù)組在內(nèi)存中是一塊連續(xù)的內(nèi)存,只要將該數(shù)組的首地址傳進(jìn)去,當(dāng)然就可以訪問整個(gè)數(shù)組了。值得注意的是,由于只傳了首地址,函數(shù)不知道數(shù)組的維數(shù),所以還得把數(shù)組的維數(shù)傳進(jìn)去,那就可以完全操作該數(shù)組了。
c語言數(shù)組如何在函數(shù)中傳遞?不要指針傳遞
數(shù)組作為參數(shù)是按地址傳遞的 數(shù)組名就是數(shù)組的首地址。因此在數(shù)組名作函數(shù)參數(shù)時(shí)所進(jìn)行的傳送只是地址的傳送, 也就是說把實(shí)參數(shù)組的首地址賦予形參數(shù)組名。形參數(shù)組名取得該首地址之后,也就等于有了實(shí)在的數(shù)組。
不用指針,但又想通過在函數(shù)中改變此數(shù)組中的元素的值,方法如下:方法是實(shí)參與形參的對應(yīng)關(guān)系為:形參和實(shí)參都用數(shù)組名。
傳數(shù)組給一個(gè)函數(shù),數(shù)組類型自動轉(zhuǎn)換為指針類型,因而傳的實(shí)際是地址。void func(int array[10])void func(int array[])void func(int *array)所以以上三種函數(shù)聲明完全等同。實(shí)際情況是,數(shù)組做參數(shù),完全無法按值傳遞。
聲明函數(shù)和實(shí)現(xiàn)函數(shù)要一致。kid bii(struct kid c) 這個(gè)定義一個(gè)返回kid類型的函數(shù),形參是kid 不是指針。
結(jié)構(gòu)體數(shù)組傳給指針,實(shí)質(zhì)上是不可能的,本質(zhì)上傳的是數(shù)組首地址,根據(jù)偏移來操作數(shù)組,這樣看起來好像是真在操作數(shù)組一樣。就和普通指針一樣使用,只不過它是結(jié)構(gòu)體數(shù)組。
在C語言中,數(shù)組作為參數(shù),是怎樣在函數(shù)之間傳遞的啊??
C語言中,數(shù)組名作為函數(shù)參數(shù),屬于數(shù)組參數(shù)傳遞。在VB0中,允許使用數(shù)組作為實(shí)參傳遞到子過程的形參中,數(shù)組傳遞必須采用地址傳遞的方式來傳遞參數(shù)。
數(shù)組名代表著整個(gè)數(shù)組的地址,如果一維數(shù)組的名字作為函數(shù)實(shí)參,傳遞的是整個(gè)數(shù)組,即形參數(shù)組和實(shí)參數(shù)組完全相同,是存放在同一存儲空間的同一個(gè)數(shù)組。這樣形參數(shù)組 修改時(shí),實(shí)參數(shù)組也同時(shí)被修改了。
傳數(shù)組給一個(gè)函數(shù),數(shù)組類型自動轉(zhuǎn)換為指針類型,因而傳的實(shí)際是地址。void func(int array[10])void func(int array[])void func(int *array)所以以上三種函數(shù)聲明完全等同。實(shí)際情況是,數(shù)組做參數(shù),完全無法按值傳遞。
C語言怎么向自定義函數(shù)中傳入一個(gè)數(shù)組,處理完再返回新的數(shù)組?
方法:把最大值、最小值分別定義成2個(gè)全局變量max、min,在用戶自定義函數(shù)中把求出來的最大值與最小值分別賦給全局變量max、min。函數(shù)調(diào)用完畢后全局變量的max、min值即保存了函數(shù)要求返回的值。
辦法有二: 函數(shù)內(nèi)部新數(shù)組定義為static,這樣可以直接把這個(gè)數(shù)組返回出來; 在函數(shù)內(nèi)部把新數(shù)組的內(nèi)容拷貝到外部數(shù)組里。
數(shù)組不可以直接返回,只能通過參數(shù)傳遞出來,比如: void fun(int* p); int main() { int a[100]; fun(a); return 0; } 希望能幫助你。
數(shù)組名其實(shí)是個(gè)指針,你可以返回一個(gè)指針。如:int* fun(int a,int b)這樣就可以。還有一種替代方式是在輸入?yún)?shù)里加入一個(gè)數(shù)組,在函數(shù)里對數(shù)組進(jìn)行修改,函數(shù)運(yùn)行后數(shù)組內(nèi)容也改變了。
值得注意的是,由于只傳了首地址,函數(shù)不知道數(shù)組的維數(shù),所以還得把數(shù)組的維數(shù)傳進(jìn)去,那就可以完全操作該數(shù)組了。
分享題目:c語言數(shù)組發(fā)送函數(shù) c語言傳數(shù)組給函數(shù)
本文鏈接:http://fisionsoft.com.cn/article/dioshic.html