<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 3.C語言函數的參數和返回值 ## 形式參數和實際參數 前面已經介紹過,函數的參數分為形參和實參兩種。在本節中,進一步介紹形參、實參的特點和兩者的關系。形參出現在函數定義中,在整個函數體內都可以使用,離開該函數則不能使用。 實參出現在主調函數中,進入被調函數后,實參變量也不能使用。形參和實參的功能是作數據傳送。發生函數調用時,主調函數把實參的值傳送給被調函數的形參從而實現主調函數向被調函數的數據傳送。 函數的形參和實參具有以下特點: * 形參變量只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數后則不能再使用該形參變量。 * 實參可以是常量、變量、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。 * 實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生類型不匹配”的錯誤。 函數調用中發生的數據傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函數調用過程中,形參的值發生改變,而實參中的值不會變化。 ![](http://www.lvtao.net/content/uploadfile/201404/b7df0e5e3563a10ab62151024fc900e620140421042907.gif) 【例8-2】可以說明這個問題。 ~~~ main(){ int n; printf("input number\n"); scanf("%d",&n); s(n); printf("n=%d\n",n); } int s(int n){ int i; for(i=n-1;i>=1;i--) n=n+i; printf("n=%d\n",n); } ~~~ 本程序中定義了一個函數s,該函數的功能是求∑ni的值。在主函數中輸入n值,并作為實參,在調用時傳送給s 函數的形參量n( 注意,本例的形參變量和實參變量的標識符都為n,但這是兩個不同的量,各自的作用域不同)。在主函數中用printf 語句輸出一次n值,這個n值是實參n的值。在函數s中也用printf 語句輸出了一次n值,這個n值是形參最后取得的n值0。從運行情況看,輸入n值為100。即實參n的值為100。把此值傳給函數s時,形參n的初值也為100,在執行函數過程中,形參n的值變為5050。返回主函數之后,輸出實參n的值仍為100。可見實參的值不隨形參的變化而變化。 ## 函數的返回值 函數的值(或稱函數返回值)是指函數被調用之后,執行函數體中的程序段所取得的并返回給主調函數的值。如調用正弦函數取得正弦值,調用【例8-1】的max函數取得的最大數等。對函數的值有以下一些說明: 1) 函數的值只能通過return語句返回主調函數。return語句的一般形式為: ? ? return 表達式; 或者為: ? ? return (表達式); 該語句的功能是計算表達式的值,并返回給主調函數。在函數中允許有多個return語句,但每次調用只能有一個return 語句被執行,因此只能返回一個函數值。 2) 函數值的類型和函數定義中函數的類型應保持一致。如果兩者不一致,則以函數類型為準,自動進行類型轉換。 3) 如函數值為整型,在函數定義時可以省去類型說明。 4) 不返回函數值的函數,可以明確定義為“空類型”,類型說明符為“void”。如【例8-2】中函數s并不向主函數返函數值,因此可定義為: ~~~ void s(int n){ /* …… */ } ~~~ 一旦函數被定義為空類型后,就不能在主調函數中使用被調函數的函數值了。例如,在定義s為空類型后,在主函數中寫下述語句 ~~~ sum=s(n); ~~~ 就是錯誤的。 為了使程序有良好的可讀性并減少出錯, 凡不要求返回值的函數都應定義為空類型。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看