首頁>Club>
4
回覆列表
  • 1 # @嚕啦嚕啦嚕啦咧嚕啦啦

    _stdcall是Pascal程序的缺省調用方式,通常用於Win32 Api中,函數採用從右到左的壓棧方式,自己在退出時清空堆棧。VC將函數編譯後會在函數名前面加上下劃線前綴,在函數名後加上"@"和參數的字節數。_cdecl 按從右至左的順序壓參數入棧,由調用者把參數彈出棧。對於傳送參數的內存棧是由調用者來維護的(正因為如此,實現可變參數的函數只能使用該調用約定)是C和C++程序的默認調用約定。__cdecl調用約定僅在輸出函數名前加上一個下劃線前綴,格式為_functionname。_fastcall方式的函數採用寄存器傳遞參數,VC將函數編譯後會在函數名前面加上"@"前綴...

  • 2 # 心悅怡人1

    一、C語言函數

    1.概念:函數是一組一起執行一個任務的語句,每個c程序都必須有一個main函數,程序員可以把代碼劃分到不同的函數當中去,在邏輯上,劃分通常是根據每個函數執行一個特定的任務來進行的。c標準庫提供了可以大量調用的庫函數,比如,printf,strcmp等。

    2.函數的定義

    c語言中函數的一般定義如下:

    return_type Function_name(Parameter List)

    {

    The function body

    }

    在c語言中,函數由一個函數頭和一個函數主體組成,組成有以下方面:

    函數名稱:上面的函數名稱即為max。

    函數的返回類型:一個函數可以返回一個值,這裡的max函數的返回值是一個int型的整數,函數也可以沒有返回值,例如void max(),void代表該函數是一個沒有返回值的函數。

    注意函返回類型的值以該函數的返回類型一致,具體表現為:

    函數的參數:當一個函數被調用時可以向該函數的參數傳遞一個值,這個值叫做實際參數,簡稱實參,函數的參數叫形式參數,簡稱形參。當然,一個函數也可以沒有參數。

    函數主體:其包括該函數裡執行任務的語句,例子中的函數主體就是return a>b?a:b;

    下面是一個定義一個比較大小函數的實例:

    3.函數在定義時會有兩種情況

    在main函數之前定義,程序在這種情況下不需要再main函數裡聲明。

    在main函數之後定義,這時需要在main函數裡聲明該函數,比如,聲明Max函數時

    int main()

    {

    int Max(int a,int b);

    }

    二、函數的調用

    1.定義函數時會定義這個函數要做什麼,然後通過調用該函數來完成定義的任務。當程序調用函數時,程序控制權會轉移給被調用的函數。被調用的函數執行已定義的任務,當函數的返回語句被執行時,或到達函數的結束括號時,會把程序控制權交還給主程序。下面是一個具體調用函數的例子:

    2.函數的嵌套調用與遞歸

    函數的嵌套調用:簡單來說就是在一個定義的函數裡在調用另一個函數;

    下面是一個比較三個數大小的例子:

    函數的遞歸調用:遞歸是一種特殊的函數調用方式,簡單來說就是在一個函數裡再調用它自身為遞歸調用,函數遞歸會不斷調用自己,每調用自己一次就進入新的一層,當最內層函數執行完後然後一層層向外退出。

    以上可以看出遞歸的代碼量比較少,但遞歸會佔用較大的內存,而且運行時間長,所以如果不是什麼特殊問題需要用遞歸解決盡量少用遞歸。

    3.函數的傳參

    函數傳遞參數會有兩種方式:

    1.傳值調用:該方法把參數的實際值複製給函數的形式參數。在這種情況下,修改函數內的形式參數不會影響實際參數。(該方式在函數內部不會改變實參的值),比如下面的例子可以說明這點:

    在函數調用過程中,系統會為形參重新申請內存,函數調用完後形參會被釋放掉。

    2.引用調用:通過指針傳遞方式,形參為指向實參地址的指針,當對形參的指向操作時,就相當於對實參本身進行的操作。

  • 中秋節和大豐收的關聯?
  • 女生說想發火怎麼回復?