奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語言

C語言函數參數傳遞規律

時間:2024-10-12 16:50:22 C語言 我要投稿
  • 相關推薦

C語言函數參數傳遞規律

  導語:C語言的模塊設計主要是通過函數實現的,函數間信息的傳遞主要是通過參數實現的。函數的參數傳遞包括傳值和傳址。下面就由小編為大家介紹一下C語言函數參數傳遞規律,歡迎大家閱讀!

  1、參數的傳遞方式

  C語言函數的參數傳遞可以歸納為兩種方式:傳值和傳址。下面用實例和圖示兩種方式進行描述。

  1.1傳值

  傳值傳遞方式主要出現在實參和形參都是變量的時候,如基類型變量、數組元素、結構體變量作參數時,進行的就是值傳遞,程序如下:

  在上述的例子中,函數調用時如圖1(a)所示。實參將值傳給形參,形參在子函數里發生互換,但不能將互換的值傳回給實參,結果如圖1(b)所示。因此實參在整個過程中沒有發生變化,由此可以總結當用普通變量作參數時,進行的是單向的值傳遞,只能實參傳形參,形參無法傳實參。

  圖1變量作參數的調用過程1.2傳址

  該方法中函數調用時參數間傳遞的地址有以下3種情況:變量的地址作參數、數組名作參數以及指針作參數。由于變量的地址作參數與指針作參數類似,這里就不再舉例,主要針對數組名作參數和指針作參數進行探討。

  1.2.1數組名作參數

  數組名作參數的程序如下:

  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]);}

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

  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數組名作參數的調用過程1.2.2指針作參數

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

  void swap(int *a,int *b)

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

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

  2、結語

  調用函數時,從參數的傳遞情況來看,其實質就是傳值和傳址,傳值是變量作參數,實參只負責給形參賦初值,形參在整個過程中的改變都不影響實參,所以是單向的值傳遞。傳址是數組名和指針作參數,此時體現的就是共享,數組名作參數,實參和形參共享一個數組,形參數組的改變就是實參數組的改變;指針作參數共享的是同一個變量的地址,即實參和形參共同指向同一個變量,當改變形參所指向的變量值時,實參所指向的變量值也一同改變,因為它們指向的是同一個變量。如果改變的是形參的指向,則不影響實參指針的改變。


【C語言函數參數傳遞規律】相關文章:

C語言函數參數傳遞問題10-17

C語言函數調用與參數傳遞08-05

C語言函數的參數和返回值09-14

C語言中指針變量作為函數參數詳解07-01

關于淺談C語言函數調用參數壓棧的相關問題11-03

java語言參數傳遞介紹06-12

什么是C語言函數09-26

C語言函數的定義07-13

C語言的可變參數問題08-23

C語言函數的遞歸調用08-26

主站蜘蛛池模板: 莆田市| 三亚市| 桓仁| 威远县| 平定县| 隆子县| 潮州市| 曲阳县| 洛川县| 隆林| 济宁市| 迁安市| 安塞县| 寻乌县| 抚顺市| 玉环县| 五台县| 孝感市| 石首市| 和林格尔县| 商丘市| 普定县| 普安县| 湾仔区| 萨迦县| 长垣县| 丰县| 旬邑县| 平凉市| 石台县| 禄丰县| 平泉县| 增城市| 惠安县| 周至县| 贡嘎县| 临高县| 濮阳县| 大港区| 扶沟县| 长治市|