• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      C++語言中關(guān)于函數(shù)參數(shù)傳遞方式的探討

      2012-04-29 22:54:41孫勤
      電腦知識與技術(shù) 2012年21期
      關(guān)鍵詞:函數(shù)調(diào)用存儲單元程序設(shè)計

      孫勤

      摘要:在C+ +程序設(shè)計函數(shù)調(diào)用過程中,函數(shù)參數(shù)的傳遞是至關(guān)重要的內(nèi)容,參數(shù)傳遞的方式不同,其傳遞的內(nèi)容也不同類型,在程序設(shè)計過程中,選擇恰當(dāng)?shù)膮?shù)傳遞方式,不僅可以使程序更加簡潔,同時可以提供程序的運(yùn)行效率,該文較為全面的論述了C++中函數(shù)參數(shù)傳遞的幾種常見方式以及各種方式的優(yōu)點(diǎn)及區(qū)別。

      關(guān)鍵詞:C++;函數(shù)調(diào)用;參數(shù)傳遞

      中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2012)21-5116-03

      Discussion on the Function Parameter Passing in C++ Programming

      SUN Qin

      (Gansu Agricultural University, Lanzhou 730070, China))

      Abstract: In the process of function call of C+ + programming, the function parameter passing is of the utmost importance. When the methods of parameter passing are different, the contents passed are also of different styles. In the programming, selecting proper methods of parameter passing can not only simplify the program, but also can promote the operation efficiency of the program. This paper gives a com prehensive discussion about several common methods of the function parameter passing in C+ + as well as their advantages and their differ ences.

      Key words: C++; function call; function parameter passing

      C++語言是在C語言的基礎(chǔ)上擴(kuò)充了面向?qū)ο蟮母拍詈拖鄳?yīng)的處理機(jī)制而形成的一種混合型的程序設(shè)計語言,C++全面兼容C。在一個C/C++程序中,為避免主函數(shù)龐雜、頭緒不清,閱讀和維護(hù)困難,經(jīng)常用模塊化程序設(shè)計的思路,采用“組裝”的辦法簡化程序設(shè)計的過程,即事先編好一批實現(xiàn)各種不同功能的函數(shù),把它們保存在函數(shù)庫中,需要時直接用。C/C++程序可由一個主函數(shù)和若干個其他函數(shù)構(gòu)成,主函數(shù)調(diào)用其他函數(shù),其他函數(shù)也可以互相調(diào)用。在程序設(shè)計中善于利用函數(shù),可以減少重復(fù)編寫程序段的工作量,同時可以方便地實現(xiàn)模塊化的程序設(shè)計。

      1 C++中的函數(shù)

      從用戶使用的角度看,函數(shù)有兩種,一是庫函數(shù),它是由系統(tǒng)提供的;二是用戶自己定義的函數(shù),它是用以解決用戶專門需要的函數(shù)。

      從函數(shù)的形式看,函數(shù)分兩類。

      1)無參函數(shù)。無參函數(shù)一般用來執(zhí)行一組特定的操作,一般不帶回函數(shù)值。

      2)有參函數(shù)。在調(diào)用函數(shù)時,主調(diào)函數(shù)通過參數(shù)向被調(diào)用函數(shù)傳遞數(shù)據(jù),一般情況下,被調(diào)用函數(shù)調(diào)用結(jié)束時會向主調(diào)函數(shù)返回一個函數(shù)值供主調(diào)函數(shù)使用。

      在函數(shù)調(diào)用過程中,主調(diào)函數(shù)調(diào)用被調(diào)函數(shù)時通過參數(shù)傳遞的值通常有兩種:變量值或地址值;傳遞值的類型不同,結(jié)果截然不同。全面掌握形參和實參之間的數(shù)據(jù)傳遞,對分析函數(shù)的運(yùn)行是十分關(guān)鍵的。在c++中,實參向形參傳遞數(shù)據(jù)可以帶來兩種結(jié)果,即通過函數(shù)調(diào)用可以改變實參對應(yīng)存儲單元的值和不能改變實參對應(yīng)存儲單元的值。其基本的參數(shù)傳遞有三種不同的方式,即傳值、傳地址和傳遞引用。

      2 C++中的函數(shù)參數(shù)傳遞的幾種方式

      函數(shù)調(diào)用過程中的參數(shù)傳遞本質(zhì)上是一種賦值過程,即傳遞“值”的過程,在調(diào)用函數(shù)時,函數(shù)的每個形式參數(shù)得到實際參數(shù)傳遞過來的一個“值”,該“值”可以是一個變量的值、一個變量的地址或是一個引用,“值”的類型不同結(jié)果也截然不同。下面舉例說明函數(shù)調(diào)用時參數(shù)傳遞的幾種方式。

      2.1單向傳值

      當(dāng)實參是普通變量時,函數(shù)形參為對應(yīng)類型的變量,函數(shù)發(fā)生調(diào)用時,系統(tǒng)給形參分配存儲單元,存放從實參復(fù)制過來的數(shù)值。形參存儲單元在函數(shù)調(diào)用結(jié)束后當(dāng)即釋放,這種值傳遞是單向的,通過函數(shù)調(diào)用不會改變實參單元的值。

      例1:

      #include

      void swap(int x,int y)

      {int z;

      z=x;

      x=y;

      y=z;

      cout<<”the x, yn is:”<

      }int main()

      {int m,n;

      Cin>>m>>n;

      swap(m,n);

      cout<<”the m, n is:”<

      return 0 ;

      例1中main函數(shù)在調(diào)用swap函數(shù)時,把實參m,n的值傳給了形參x、y,假設(shè)程序運(yùn)行時輸入的m和n的值分別為10、20,在swap函數(shù)中x和y的值進(jìn)行了交換,而在主函數(shù)中實參m和n的值并沒有發(fā)生相應(yīng)的交互,即形參值的改變不能返回到實參中,因為x和y是swap函數(shù)內(nèi)部定義的變量,屬于局部變量,調(diào)用函數(shù)時,系統(tǒng)為其動態(tài)分配存儲空間,調(diào)用結(jié)束后當(dāng)即被釋放,這種參數(shù)傳遞體現(xiàn)了傳值的單向性。調(diào)用過程如圖1所示。

      圖1

      2.2傳遞地址

      若在函數(shù)定義時將形實參數(shù)類型說明成指針或數(shù)組名,要調(diào)用這樣的函數(shù)相應(yīng)的實參就必須是地址值形式的實參,比如指針、變量的地址、數(shù)組名等。此時參數(shù)傳遞方式即為地址傳遞方式。這種傳遞地址的方式跟上述的按傳遞變量值不同,在調(diào)用過程中,把實參的內(nèi)容傳遞給形參,即使得實參和形參指向了同一個存儲單元,此時在函數(shù)調(diào)用過程中對形參的所有操作實際上同時是對實參的操作,因此,被調(diào)函數(shù)中形參指針?biāo)复鎯卧袃?nèi)容的改變都會影響到實參存儲單元。傳遞地址是實參和形參的形式有以下幾種:

      1)實參為數(shù)組名,形參為指針

      2)實參為數(shù)組名,形參為數(shù)組名3)實參為指針,形參為數(shù)組名4)實參為指針,形參為指針

      說明:數(shù)組名代表該數(shù)組首元素的地址,因此,用數(shù)組名作為函數(shù)的形參或?qū)崊r,實際是對該數(shù)組的操作。實際上,C++編譯系統(tǒng)都是將形參數(shù)組名作為指針變量來處理。

      例2:

      #include

      void fun(int a[2])

      { for(int i=0;i<2;i++)

      a[i]=a[i]*a[i];}

      void main(void)

      { int b[2]={2,4};

      cout<

      fun(b);

      cout<

      }

      例2中通過函數(shù)調(diào)用,數(shù)組b和數(shù)組a占據(jù)同一段內(nèi)存,假設(shè)數(shù)組b首單元地址為2000H,a同樣為數(shù)組首地址,也是2000H.過程如所示。

      2.3傳遞引用

      定義引用就是給某一變量賦予一個別名,對引用的所有操作與對變量的操作完全一樣。因此引用不是定義新的變量,C++系統(tǒng)不會為引用類型變量分配內(nèi)存空間,這樣使用引用作為函數(shù)的形參不僅可以達(dá)到傳遞地址的目的,即通過形參的改變?nèi)ジ淖儗崊⒌闹?,而且也會因為不用重新分配空間而節(jié)省系統(tǒng)的開銷。

      例3:

      #include

      void swap(int &x,int &y){

      int z;

      z=x; x=y; y=z;

      cout<<"x="<查看pdf文檔請下載app

      -->
      猜你喜歡
      函數(shù)調(diào)用存儲單元程序設(shè)計
      一種28 nm工藝下抗單粒子翻轉(zhuǎn)SRAM的12T存儲單元設(shè)計
      基于C語言的數(shù)學(xué)菜單的設(shè)計與實現(xiàn)
      基于Visual Studio Code的C語言程序設(shè)計實踐教學(xué)探索
      從細(xì)節(jié)入手,談PLC程序設(shè)計技巧
      電子制作(2019年9期)2019-05-30 09:42:04
      數(shù)據(jù)在計算機(jī)內(nèi)存中的存儲形式及實驗驗證
      基于函數(shù)調(diào)用序列模式和函數(shù)調(diào)用圖的程序缺陷檢測方法*
      探討C++編程中避免代碼冗余的技巧
      Unity3D項目腳本優(yōu)化分析與研究
      中國新通信(2017年1期)2017-03-08 03:12:21
      一種成本更低的全新靜態(tài)DRAM存儲單元
      MiR-125a-5p is Upregulated in Plasma of Residents from An Electronic Waste Recycling Site
      九寨沟县| 皮山县| 玉溪市| 黄山市| 乾安县| 泰兴市| 左贡县| 庄河市| 许昌市| 怀仁县| 广昌县| 同德县| 沈阳市| 德州市| 平山县| 延吉市| 奉化市| 鱼台县| 武城县| 峡江县| 沁阳市| 河南省| 江永县| 谷城县| 盐源县| 扶绥县| 广宁县| 澄江县| 红安县| 安徽省| 关岭| 临城县| 大田县| 西盟| 宝鸡市| 广宁县| 定兴县| 浦北县| 南汇区| 萨嘎县| 尼勒克县|