999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C語(yǔ)言函數(shù)參數(shù)傳遞規(guī)律

2012-04-12 00:00:00趙娟樊超
現(xiàn)代電子技術(shù) 2012年4期

摘要:C語(yǔ)言的模塊設(shè)計(jì)主要是通過(guò)函數(shù)實(shí)現(xiàn)的,函數(shù)間信息的傳遞主要是通過(guò)參數(shù)實(shí)現(xiàn)的。函數(shù)的參數(shù)傳遞包括傳值和傳址。為了區(qū)別兩種傳遞方式的不同,采用實(shí)例和圖示兩種方法,列舉了變量、數(shù)組名、指針作參數(shù)的實(shí)例,通過(guò)比較函數(shù)調(diào)用后形參和實(shí)參的變化,總結(jié)出函數(shù)調(diào)用時(shí)參數(shù)傳遞的兩種規(guī)律,即基類(lèi)型變量、數(shù)組元素、結(jié)構(gòu)體變量作參數(shù)時(shí)是傳值,也就是單向的值傳遞;數(shù)組名、指針作參數(shù)時(shí)是傳址,也就是共享同一個(gè)地址。

關(guān)鍵詞:傳值; 傳址; C語(yǔ)言函數(shù); 地址共享

中圖分類(lèi)號(hào):TN91134; TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1004373X(2012)04005502

Parameter delivery law of C language function

ZHAO Juan1, FAN Chao2

(1. North Institute of Information Engineering, Xi’an Technological University, Xi’an 710025, China;

2. Shaanxi Youth Vocational College, Xi’an 710068, China)

Abstract: C language module design is implemented mainly through the function. The information between the functions is delivered by parameters. The parameter delivery of the function includes the delivery value and delivery address. In order to distinguish the difference of the two modes, two methods of examples and illustrations are adopted. The instances which takes variable, array name and pointer as parameters are listed. By comparing the variation of formal parameter and actual parameter after function call, two laws of the parameter delivery, while the function was called, were summed up: the base type variable, array element and structure variables as parameters are passed by value, that is, they deliver information in one way; the array name and pointer as parameters are passed by address, that is, they share the same address.

Keywords: delivery value; delivery address; C language function; address sharing

收稿日期:20110926在程序設(shè)計(jì)中常采用模塊設(shè)計(jì)方法,實(shí)際上所謂模塊設(shè)計(jì)的思想是一種“分而治之”的思想,把一個(gè)大任務(wù)分為若干個(gè)子任務(wù),這樣每一個(gè)子任務(wù)就相對(duì)簡(jiǎn)單了。程序中的子任務(wù)在C語(yǔ)言中通常是用函數(shù)來(lái)實(shí)現(xiàn)的。通過(guò)函數(shù)間的相互調(diào)用來(lái)完成程序的主要任務(wù)。參數(shù)是實(shí)現(xiàn)函數(shù)間信息傳遞的主要通道,因此掌握參數(shù)的傳遞方式,把握函數(shù)間的傳遞規(guī)律是學(xué)習(xí)C語(yǔ)言的關(guān)鍵。

1參數(shù)的傳遞方式

C語(yǔ)言函數(shù)的參數(shù)傳遞可以歸納為兩種方式:傳值和傳址。下面用實(shí)例和圖示兩種方式進(jìn)行描述。

1.1傳值

傳值傳遞方式主要出現(xiàn)在實(shí)參和形參都是變量的時(shí)候,如基類(lèi)型變量、數(shù)組元素、結(jié)構(gòu)體變量作參數(shù)時(shí),進(jìn)行的就是值傳遞,程序如下:

在上述的例子中,函數(shù)調(diào)用時(shí)如圖1(a)所示。實(shí)參將值傳給形參,形參在子函數(shù)里發(fā)生互換,但不能將互換的值傳回給實(shí)參,結(jié)果如圖1(b)所示。因此實(shí)參在整個(gè)過(guò)程中沒(méi)有發(fā)生變化,由此可以總結(jié)當(dāng)用普通變量作參數(shù)時(shí),進(jìn)行的是單向的值傳遞,只能實(shí)參傳形參,形參無(wú)法傳實(shí)參。

圖1變量作參數(shù)的調(diào)用過(guò)程1.2傳址

該方法中函數(shù)調(diào)用時(shí)參數(shù)間傳遞的地址有以下3種情況:變量的地址作參數(shù)、數(shù)組名作參數(shù)以及指針作參數(shù)。由于變量的地址作參數(shù)與指針作參數(shù)類(lèi)似,這里就不再舉例,主要針對(duì)數(shù)組名作參數(shù)和指針作參數(shù)進(jìn)行探討。

1.2.1數(shù)組名作參數(shù)

數(shù)組名作參數(shù)的程序如下:

void f(int t[],int n)

{int i; for(i=0;i

void main()

{ int a[4]={1,2,3,4},i; f(a,4); for(i=0;i<4;i++) printf(“%d ”,a[i]);}

數(shù)組名作參數(shù)時(shí),傳遞的是數(shù)組的首地址,即實(shí)參數(shù)組和形參數(shù)組共用一段內(nèi)存空間,如圖2(a)所示。在子函數(shù)中對(duì)數(shù)組t的所有元素進(jìn)行賦值,其實(shí)也就是對(duì)數(shù)組a的所有元素進(jìn)行賦值,如圖2(b)所示。所以當(dāng)用數(shù)組名作參數(shù)時(shí),實(shí)參和形參共享一個(gè)數(shù)組,形參數(shù)組的改變也就是實(shí)參數(shù)組的改變,其程序如下:

void swap(int *a, int *b)

{int temp; temp=*a;*a=*b;*b=temp;}

main()

{int x=3, y=5, *p=x, *q=y;

swap(p,q); printf(\"%d,%d\",*p,*q);}

圖2數(shù)組名作參數(shù)的調(diào)用過(guò)程1.2.2指針作參數(shù)

指針作參數(shù)與數(shù)組名作參數(shù)類(lèi)似,傳遞的也是地址,但此時(shí)不是共享一個(gè)數(shù)組,而是共享一個(gè)變量的地址,即實(shí)參指針和形參指針共同指向同一個(gè)變量,共享同一個(gè)變量地址如圖3所示。這時(shí)有2種情況:改變形參的指向;改變形參所指向的變量。上面的例子屬于第二種情況,形參指向的變量值發(fā)生變化,也就是實(shí)參指向的變量值發(fā)生變化。把此例稍做修改得如下程序:

void swap(int *a,int *b)

{int *temp; temp=a; a=b; b=temp;}

將函數(shù)稍做改動(dòng)后,子函數(shù)的功能只是改變了形參指針的指向,如圖4(c)所示。對(duì)實(shí)參并無(wú)影響,從而也不會(huì)影響實(shí)參所指向的變量值。

2結(jié)語(yǔ)

調(diào)用函數(shù)時(shí),從參數(shù)的傳遞情況來(lái)看,其實(shí)質(zhì)就是傳值和傳址,傳值是變量作參數(shù),實(shí)參只負(fù)責(zé)給形參賦初值,形參在整個(gè)過(guò)程中的改變都不影響實(shí)參,所以是單向的值傳遞。傳址是數(shù)組名和指針作參數(shù),此時(shí)體現(xiàn)的就是共享,數(shù)組名作參數(shù),實(shí)參和形參共享一個(gè)數(shù)組,形參數(shù)組的改變就是實(shí)參數(shù)組的改變;指針作參數(shù)共享的是同一個(gè)變量的地址,即實(shí)參和形參共同指向同一個(gè)變量,當(dāng)改變形參所指向的變量值時(shí),實(shí)參所指向的變量值也一同改變,因?yàn)樗鼈冎赶虻氖峭粋€(gè)變量。如果改變的是形參的指向,則不影響實(shí)參指針的改變。

圖3指針作參數(shù)的調(diào)用過(guò)程1圖4指針作參數(shù)的調(diào)過(guò)過(guò)程2參考文獻(xiàn)

[1]譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2005.

[2]楊戰(zhàn)海,薛蘇秦,張曉光.基于C語(yǔ)言函數(shù)參數(shù)傳遞規(guī)律的探討[J].現(xiàn)代電子技術(shù),2008,31(16):8991.

[3]馬新.C語(yǔ)言函數(shù)間參數(shù)傳遞機(jī)制的探討[J].白城師范學(xué)院學(xué)報(bào),2008(6):2627.

[4]王英存.C語(yǔ)言教學(xué)中函數(shù)參數(shù)傳遞難點(diǎn)探討[J].中國(guó)商界,2010(9):258259.

[5]李寅杰.C語(yǔ)言函數(shù)中的三類(lèi)形參[J].遼寧師專(zhuān)學(xué)報(bào):自然科學(xué)版,2007(3):5254.

[6]張艷華.C語(yǔ)言函數(shù)形參與實(shí)參之間的數(shù)據(jù)傳遞[J].內(nèi)江科技,2007(9):80.

[7]張?bào)慵t,李軍宇,高喜民.C語(yǔ)言函數(shù)形參與實(shí)參之間的數(shù)據(jù)傳遞[J].平頂山工學(xué)院學(xué)報(bào),2002(3):5152.

[8]王曉青.C語(yǔ)言函數(shù)調(diào)用時(shí)的參數(shù)變化[J].青海大學(xué)學(xué)報(bào):自然科學(xué)版,1998(1):5558.

[9]古麗孜拉·安尼瓦爾.C語(yǔ)言函數(shù)參數(shù)傳遞的幾個(gè)問(wèn)題[J]. 伊犁師范學(xué)院學(xué)報(bào),2004(3):7374.

[10]楊戰(zhàn)海,郭協(xié)潮.基于C語(yǔ)言函數(shù)調(diào)用獲得結(jié)果的分析研究[J].現(xiàn)代電子技術(shù),2007,30(24):102103.

主站蜘蛛池模板: 内射人妻无码色AV天堂| 国产本道久久一区二区三区| 91视频青青草| 国产在线一二三区| 国产亚洲高清视频| 国产欧美日本在线观看| 88av在线看| 欧美一区二区三区不卡免费| 一级看片免费视频| 成人国产一区二区三区| 国产欧美专区在线观看| 老色鬼欧美精品| 97一区二区在线播放| 欧美伦理一区| a级毛片免费看| 国产理论一区| 久久国产精品夜色| 国产乱人乱偷精品视频a人人澡| 午夜啪啪福利| 精品视频第一页| 亚洲无线国产观看| 亚洲无码精品在线播放| 国产专区综合另类日韩一区| 精品久久国产综合精麻豆| 久久精品人人做人人| 久久综合五月婷婷| 黄色免费在线网址| 精品国产自在现线看久久| 米奇精品一区二区三区| 久久无码av一区二区三区| 一区二区欧美日韩高清免费 | 亚洲免费黄色网| 亚洲成人一区在线| 不卡无码网| 东京热av无码电影一区二区| 亚洲欧美一级一级a| 欧美国产日韩在线| 久久久久国产精品嫩草影院| 一区二区三区成人| 亚洲视频免费在线| 婷婷六月天激情| 五月综合色婷婷| 91亚瑟视频| 国产99免费视频| 中国黄色一级视频| 欧美精品影院| 亚洲另类色| Aⅴ无码专区在线观看| 久热中文字幕在线| 91精品啪在线观看国产91九色| 亚洲综合色区在线播放2019| 精品国产一区91在线| 中文字幕1区2区| 91精品aⅴ无码中文字字幕蜜桃| 国产一区二区视频在线| 亚洲一区二区精品无码久久久| 亚洲av日韩av制服丝袜| www精品久久| 久草网视频在线| 91在线丝袜| 无码丝袜人妻| 91精品久久久无码中文字幕vr| 五月天婷婷网亚洲综合在线| 久久久久青草线综合超碰| 国产91高清视频| 久草视频福利在线观看| 五月天久久婷婷| 欧美日韩成人| 五月天丁香婷婷综合久久| 不卡午夜视频| 99国产精品国产高清一区二区| 欧美一区二区自偷自拍视频| 国产人免费人成免费视频| 亚洲成人网在线观看| 91av成人日本不卡三区| 婷婷色在线视频| 欧美亚洲激情| 亚洲国产欧洲精品路线久久| 在线观看无码av免费不卡网站| 老司机午夜精品网站在线观看| 欧美成人影院亚洲综合图| 国产精品福利尤物youwu|