在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

函數參數傳遞的原理

PoisonApple ? 來源:網絡整理 ? 2018-03-02 11:41 ? 次閱讀

參數傳遞,是在程序運行過程中,實際參數就會將參數值傳遞給相應的形式參數,然后在函數中實現對數據處理和返回的過程,方法有按值傳遞參數,按地址傳遞參數和按數組傳遞參數。

形參:指出現在Sub 和Function過程形參表中的變量名、數組名,該過程在被調用前,沒有為它們分配內存,其作用是說明自變量的類型和形態以及在過程中的作用。形參可以是除定長字符串變量之外的合法變量名,也可以帶括號的數組名。

實參:實參就是在調用Sub 和Function過程時,從主調過程傳遞給被調用過程的參數值。實參可以是變量名、數組名、常數或表達式。在過程調用傳遞參數時,形參與實參是按位置結合的,形參表和實參表中對應的變量名可以不必相同,但它們的數據類型、參數個數及位置必須一一對應。

函數參數傳遞的原理

等號、函數名稱、括弧和參數,是函數的四個組成部分。

函數“=SUM(1,2,3)”,1、2和3就是SUM函數的參數,沒有參數1、2、3,函數SUM則無從求值。

函數“=VLOOKUP(2,A:C,3,)”,沒有參數2、A:C和3,函數VLOOKUP如何在A:C區域查找A列中是2那一行第3列的數值?

當然,也有不需要參數的函數,如“=PI()”、“=NOW()”、“TODAY()”等。

函數參數傳遞的原理

C語言中參數的傳遞方式一般存在兩種方式:一種是通過棧的形式傳遞,另一種是通過寄存器的方式傳遞的。這次,我們只是詳細描述一下第一種參數傳遞方式,另外一種方式在這里不做詳細介紹。

首先,我們看一下,下面一個簡單的調用例程:

int Add (int a, int b, int c)

{

return a+b+c;

}

void main()

{

int x =0 , y = 1, z = 2;

int result = 0;

result = Add(x, y, z);

printf(“Result for x+y+z %d”, result);

}

借助以上例程,我們具體看一下,參數是如何傳遞的。首先,我們了解一個知識點,就是“()”操作符在C語言中有很多含義,比如說,結合符、函數調用符等。那么在result = Add(x,y,z)語句中當然為函數調用符,因此在編譯階段,遇到函數調用符后的執行序為,從最后一個參數開始壓棧,壓棧順序為z-》y-》x, 直到將全部的參數壓到調用棧中,然后call到Add對應的函數地址開始執行。那么壓棧執行完成后,棧空間,從上到下依次的順序為x-》y-》z(因為棧的生長方向為向上,即地址低的地方,因此,x在地址最低的地方,即棧頂)。因此,在被調用函數中參數的讀取和操作也都是發生在棧中的。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4372

    瀏覽量

    64292
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    二維數組作為函數參數傳遞在實際中的應用

    由于表達式中的數組名data可以被解釋為指針,即data的類型為指向int [2]的指針類型int (*)[2],因此必須將pData聲明為與之匹配的類型,data才能作為實參傳遞
    的頭像 發表于 12-20 07:19 ?6758次閱讀

    #硬聲創作季 計算機基礎:函數參數傳遞

    計算機基礎
    Mr_haohao
    發布于 :2022年11月03日 08:40:43

    [3.3.1]--函數參數傳遞1

    PHPPHP開發
    jf_75936199
    發布于 :2023年03月13日 10:23:51

    [3.3.2]--函數參數傳遞2

    PHPPHP開發
    jf_75936199
    發布于 :2023年03月13日 10:24:32

    函數參數傳遞(1)#程序設計基礎

    程序設計
    學習硬聲知識
    發布于 :2023年05月30日 13:00:32

    函數參數傳遞(2)#程序設計基礎

    程序設計
    學習硬聲知識
    發布于 :2023年05月30日 13:01:16

    函數參數傳遞#Python

    程序函數python
    未來加油dz
    發布于 :2023年08月26日 23:41:38

     函數參數傳遞(1)#Python

    程序語言代碼python
    未來加油dz
    發布于 :2023年08月30日 19:12:53

     函數參數傳遞(2)#Python

    程序語言代碼python
    未來加油dz
    發布于 :2023年08月30日 19:13:56

    keil 變量xdata函數參數傳遞

    char a).當aa作為參數傳到函數bb,用a來接收的時候,區域進行了改變,區域不同,是否會出現問題?函數bb里面,用的也是unsigned char xdata b來接收a的值。從存儲空間里面來看,從
    發表于 03-03 10:34

    怎么將函數參數傳遞給內聯ASM

    這是怎么做到的?常規的asm指令編譯文件,但我從來沒有實現對函數外部聲明的函數參數或變量的訪問。我已經研究了一段時間,但我不是很清楚。什么是正確的合成函數?當做
    發表于 09-29 09:22

    為什么調用C的函數參數傳遞的往往是傳值?

    ; swap(x,y); printf("%d,%d\n",x,y);}用這個swap函數,并不能將x,y的值對換,因為函數是值傳遞,請大家幫忙怎么理解這個程序,打不開思路了。
    發表于 11-08 04:35

    函數參數傳遞出現錯誤

    定義一個函數 void test(IDINT8U TpmNum, IDINT8U ChVal, IDINT16U ChalNum);并在程序中進行調用。結果通過設置斷點看到最后一個參數的值總是傳遞
    發表于 04-16 21:51

    函數參數傳遞總是出錯怎么辦

    函數參數傳遞總是出錯,怎么辦啊??可能會是什么原因?
    發表于 07-19 08:00

    單片機的本質函數參數傳遞詳細資料說明

    本文檔的主要內容詳細介紹的是單片機的本質函數參數傳遞詳細資料說明。
    發表于 07-16 17:39 ?1次下載
    單片機的本質<b class='flag-5'>函數</b><b class='flag-5'>參數</b><b class='flag-5'>傳遞</b>詳細資料說明
    主站蜘蛛池模板: 久久天天躁狠狠躁夜夜爽蜜月 | 欧美顶级xxxxbbbb | 欧美又黄又嫩大片a级 | 天天操夜夜操狠狠操 | 天天摸日日添狠狠添婷婷 | 国产精品久久女同磨豆腐 | 被公侵犯肉体中文字幕一区二区 | 性夜影院爽黄a爽免费视 | 性xxxxbbbb免费播放视频 | 国产婷婷综合在线精品尤物 | 四虎在线永久免费视频网站 | 国产精品久久久精品视频 | 在线免费看高清视频大全 | 欧美色综合高清视频在线 | 久久国产乱子伦精品免费一 | 成人黄色免费 | 六月婷婷综合网 | 在线小视频你懂的 | 国产精品免费观看网站 | www.热| 成年网站在线看 | 国产午夜在线观看视频 | 又污又黄的网站 | 另类免费视频 | 亚洲视频1区 | 狠狠五月天小说 | freesex性欧美炮机喷潮 | 26uuu另类亚洲欧美日本一 | 国产午夜视频高清 | 亚洲最大成人网色 | 色婷婷综合久久久久中文一区二区 | 国产精品黄网站免费进入 | 午夜影院视频 | 2018国产精品 | 天天操天天操天天操香蕉 | 久久国产乱子伦精品免费看 | 国产成人精品三级在线 | 李丽莎尤物福利视频 | 日日操夜夜 | 国产乱人视频免费播放 | 手机看片午夜 |