亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

C語(yǔ)言

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

時(shí)間:2024-10-12 16:50:22 C語(yǔ)言 我要投稿
  • 相關(guān)推薦

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

  導(dǎo)語(yǔ):C語(yǔ)言的模塊設(shè)計(jì)主要是通過(guò)函數(shù)實(shí)現(xiàn)的,函數(shù)間信息的傳遞主要是通過(guò)參數(shù)實(shí)現(xiàn)的。函數(shù)的參數(shù)傳遞包括傳值和傳址。下面就由小編為大家介紹一下C語(yǔ)言函數(shù)參數(shù)傳遞規(guī)律,歡迎大家閱讀!

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

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

  1.1傳值

  傳值傳遞方式主要出現(xiàn)在實(shí)參和形參都是變量的時(shí)候,如基類型變量、數(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ù)類似,這里就不再舉例,主要針對(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ù)類似,傳遞的也是地址,但此時(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í)參指針的改變。


【C語(yǔ)言函數(shù)參數(shù)傳遞規(guī)律】相關(guān)文章:

C語(yǔ)言函數(shù)參數(shù)傳遞問(wèn)題10-17

C語(yǔ)言函數(shù)調(diào)用與參數(shù)傳遞08-05

C語(yǔ)言函數(shù)的參數(shù)和返回值09-14

C語(yǔ)言中指針變量作為函數(shù)參數(shù)詳解07-01

關(guān)于淺談C語(yǔ)言函數(shù)調(diào)用參數(shù)壓棧的相關(guān)問(wèn)題11-03

java語(yǔ)言參數(shù)傳遞介紹06-12

什么是C語(yǔ)言函數(shù)09-26

C語(yǔ)言函數(shù)的定義07-13

C語(yǔ)言的可變參數(shù)問(wèn)題08-23

C語(yǔ)言函數(shù)的遞歸調(diào)用08-26