C語言中函數的形參與實參是什麼?

2020-12-04 麥丘省錢幫

函數的參數分為形參和實參兩種形參出現:

1、在函數定義中,在整個函數體內都可以使用,離開該函數則不能使用。

2、實參出現在主調函數中,進入被調函數後,實參變量也不能使用。

數據傳送是形參和實參的主要功能。在發生函數調用時,主調函數把實參的值傳送給被調函數的形參從而實現主調函數向被調函數的數據傳送。

函數的形參和實參具有以下特點:

1. 形參變量只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變量。

2. 實參是常量、變量、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。

3. 實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生類型不匹配」的錯誤。

4. 函數調用中發生的數據傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函數調用過程中,形參的值發生改變,而實參中的值不會變化。

形式參數就是定義函數時候的參數表,只是定義了調用時參數的個數、類型和用來引用的名字,並沒有具體的內容。形參未被調用時,不佔存儲單元。形參只在調用過程中佔用存儲單元。

在調用函數時,給形參分配存儲單元,實參不僅是常量、變量或者表達式,且要與形參類型一致!而且實參要有確定的值,在調用過程中實參將值賦給形參,並將實際參數對應的數值傳遞給形式參數;

當調用結束後,形參單元被釋放,實參單元仍然保留 並且維持原值。所以說,實參是調用函數傳遞的具體數據。實參對形參數據傳遞時時單向傳遞。在存儲單元中是不同的單元。

下面這段程序中的 a 和 b 都是形式參數,x和y都是實際參數

#include<stdio.h>int fun(int a,int b){a+=10; b=a+b*2;return a+b;}void main(){int x=3,y=5,z;z=fun(x,y);printf("%d %d %d ",x,y,z);}

程序從主函數開始運行,等到運行到z=fun(x,y)開始調用被調用函數,以被調用函數的形式進行運算,然後把計算的值返回後賦值給z,這樣一個運算就算完成了。在調用過程中,形參a和b的值都發生了改變,但是在main函數中,x和y的值都未發生變化。所以說實參向形參的值的傳遞是單向的。

以上便是小編對「C語言中函數的形參與實參是什麼?」的大致介紹,希望對您有所幫助!

相關焦點

  • 認識Python函數的兩個概念:形參與實參
    format(a,b,a))形參從上面的函數定義中,我們把函數pMax小括號中的a和b當作函數的形式參數,簡稱形參。函數封裝的代碼中通過IF……ELSE……選擇判斷條件來得到兩個形參a和b所代表的數字大小。1、如果a < b,則b是較大值;2、否則,a是較大值。
  • 你知道C語言中函數調用和嵌套嗎?函數必學模塊,你不得不知!
    一、函數調用 什麼是函數調用呢?通常在C語言中,一個完整的項目程序是不可能在一個函數中實現所有的功能。而是由若干功能不同的函數來實現,並且函數之間會存在互相調用的情況。
  • C語言中的三大定律
    正在閱讀:C語言中的三大定律C語言中的三大定律2004-02-14 09:34出處:PConline作者:sunner/CSDN>自己總結的,覺得能幫助初學者看透一些紛繁複雜的語法規則,理解C語言的真諦第一次發布,不一定正確,歡迎討論、指正、補充  1.
  • C語言函數的調用 - 百度經驗
    在一個程序的編寫過程中,隨著代碼量的增加,如果把所有的語句都寫到 main 函數中,一方面程序會顯得的比較亂,另外一個方面,當同一個功能需要在不同地方執行時,我們就得再重複寫一遍相同的語句。此時,如果把一些零碎的功能單獨 寫成一個函數,在需要它們時只需進行一些簡單的函數調用,這樣既有助於程序結構的清晰條理,又可以避免大塊的代碼重複。
  • Python函數的五種參數類型
    # 位置參數def postion_fun(a,b,c):print("a = {0},b = {1},c = {2}".format(a,b,c))postion_fun(10,59,2019)postion_fun(10,59)案例中的函數定義一個列印接收到的三個參數值。一次調用函數時傳入三個實參,另一次調用則只傳入兩個實參。
  • C語言,局部變量的指針,棧幀
    函數的實參,也是局部變量。不過一般放在寄存器裡,或者比返回地址更高的地址上。被調函數開始時,x64平臺的棧幀:實參7實參6RET <- rsp指向這裡實參0-5在寄存器裡,前6個參數通過寄存器傳遞,超過6個的參數用棧傳遞,返回地址
  • 計算機二級考試C語言高頻考點
    一,C語言概述C語言基礎知識1.C語言的構成(1)源程序由函數構成,每個函數完成相對獨立的功能(2)每個源程序中必須有且只能有一個主函數可以放在任何位置(2)源程序的擴展名為.c,目標程序的擴展名為.obi,可執行程序的擴展名為.exe。
  • 自考「C語言程序設計」模擬試題十一
    「c」    B.『\\』『    C.』W『   D. 』『  14.若有代數式3ae/bc,則不正確的c語言表達式是(     )  A.a/b/c*e*3    B.3*a*e/b/c    C.3*a*e/b*c    D.a*e/c/c*3  15.在C語言中,要求運算數必須是整型的運算符是(   )  A./    B.++   C
  • 2003年10月甘肅省高等教育自學考試C語言程序設計試卷
    )  Csize of(float)  Dsize of(int)+size of(char)+size of(float)  7.若fp是指向某文件的指針,且feof(fp)的返回值是非零值,則表示  ()  A已讀到此文件末尾 B未讀到此文件的末尾  C此文件已關閉 D此文件尚未被打開  8.以下c語言函數聲明中
  • R語言中繪製常用函數曲線的方法詳解
    在本號前面的文章中介紹了使用plot函數繪製圖形的方法。本文將使用另外一種方法來繪製常見函數的曲線的方法,如冪函數曲線、指數函數曲線、三角函數曲線等。所用函數簡介本文要使用到的R函數是curve函數。;type:與plot函數中type含義相同。
  • R語言中使用lines函數繪製折線圖
    lines函數概述R語言中,abline函數每次僅能繪製一條直線,如果給出若干點,依次用線段連接起來的話,這可以藉助lines函數。R語言中lines函數的使用格式如下:lines(x, y = NULL,...)
  • r語言work_r語言work函數 - CSDN
    它包括條件語句、循環語句、用戶自定義的遞歸函數以及輸入輸出接口。(6) R語言是徹底面向對象的統計程式語言。(7) R語言和其它程式語言、資料庫之間有很好的接口。(8) R語言是自由軟體,可以放心大膽地使用,但其功能卻不比任何其它同類軟體差。(9) R語言具有豐富的網上資源一 入門訓練1.
  • C語言中的main()函數可以有好幾種類型,為何都能做入口函數呢?
    為什麼在C語言程序中,可以有不同類型當然,在一些比較舊的教材或者C語言代碼中,讀者可能還見過 void 返回值類型,甚至沒有寫返回值類型的 main() 函數原型:void main();而C語言沒有重載語法,為什麼在C語言程序中,可以有不同類型的 main() 函數呢?為什麼在C語言程序中,可以有不同類型的 main() 函數呢?C語言程序支持多種類型 main() 函數,其實和支持可變參數函數是類似的。
  • Python使用ctypes模塊調用DLL函數之C語言數組與numpy數組傳遞
    在Python語言中,可以使用ctypes模塊調用其它如C++語言編寫的動態連結庫DLL文件中的函數,在提高軟體運行效率的同時,也可以充分利用目前市面上各種第三方的DLL庫函數,以擴充Python軟體的功能及應用領域,減少重複編寫代碼、重複造輪子的工作量,這也充分體現了Python語言作為一種膠水語言所特有的優勢
  • 51單片機基礎剖析(基於C語言)
    指針是C語言中的一個重要概念,使用也十分普遍,正確使用指針類型數據可以有效的表示複雜的數據結構,直接處理內存地址,而且可以更為有效的使用數組。,兩個形參為指針變量,在調用函數時,所用的實參也是指針變量,在調用開始,實參變量將它的值傳遞給形參變量,採取的仍然是「值傳遞」方式,但這時傳遞的是指針的值(地址),傳遞後,形參pi的值為&a,pj的值為&b,即指針變量*pi 和*pa都指向了a, *pj和*pb指向了b。
  • 大學生計算機二級考試C語言中的函數入門詳解
    C語言計算機二級考試必考考點之函數入門詳解一般來說理科生的大學生有一門必修課是編程,而想要從事軟體開發的人員,沒有C語言基礎是不行的。而C語言中比較重要的部分就是函數。函數是實現各種軟體開發功能的途徑,如果你對函數了如指掌,那麼軟體開發將是一件很簡單的事情了。
  • C語言中的main函數參數,你了解嗎?
    小豆丁:今天我才發現,C語言中main函數還有參數,可是我不知道這個參數表示的是什麼含義,也不知道怎麼用。老張:就這點問題?小豆丁:嗯吶,我沒研究明白,好沮喪...老張:這個問題不難,別放棄哈,我教你!
  • R語言中使用boxplot函數繪製箱線圖
    R中繪製箱線圖的函數boxplot(1)基本用法boxplot(x, ...)(2)公式形式的用法boxplot(formula, data = NULL, ..., subset, na.action = NULL, drop = FALSE, sep = ".
  • 深入理解C語言
    對於c呢,你應該也比較肯定,那是一堆亂數。但是你可能不知道b的輸出會是什麼?答案是1,2,3。為什麼和c不一樣呢?因為,如果要初始化,每次調用函數裡,編譯器都要初始化函數棧空間,這太費性能了。但是c的編譯器會初始化靜態變量為0,因為這只是在啟動程序時的動作。全局變量同樣會被初始化。說到全局變量,你知道 靜態全局變量和一般全局變量的差別嗎?
  • C語言中的「不透明」指針是什麼,它有什麼用呢?
    雖說指針是C語言中比較複雜的語法,但是確實非常好用,因此我寫過不少文章討論C語言中的指針,相信對初學者理解指針有一定的幫助。事實上,的確有讀者私信我說看了這些文章,「總算不再畏懼指針了」。不過他同時也問了一個問題:C語言有「不透明指針(opaque pointer)」嗎?