本文目錄一覽:
- 1、c語言中函數變數調用有什麼規則?什麼時候用空文件void 什麼時候用bool,int等謝謝
- 2、調用規範stdcall和c語言的區別
- 3、C語言函數調用
- 4、C語言如何調用函數
- 5、C語言函數的調用
- 6、C語言的函數調用規則
c語言中函數變數調用有什麼規則?什麼時候用空文件void 什麼時候用bool,int等謝謝
看你設計函數的作用是什麼
舉個例子 int max(int a ,int b);
返回a,b中的較大值,返回的類型是int,這時候用int 是比較合理的。
另一個 void show(char*p){printf(……};
函數是為了輸出字元串,沒有需要返回的東西,這時候用void
bool也是類似的情況
如果你詳細看看書的話是不會問這種的問題的,好好看看書吧
調用規範stdcall和c語言的區別
在函數參數處理上不同_stdcall是Pascal程序的預設調用方式,參數採用從右到左的壓棧方式,被調函數自身在返回前清空堆棧。WIN32Api都採用_stdcall調用方式_cdecl是C/C++的預設調用方式,參數採用從右到左的壓棧方式,傳送參數的內存棧由調用者維護。_cedcl約定的函數只能被C/C++調用,每一個調用它的函數都包含清空堆棧的代碼,所以產生的可執行文件大小會比調用_stdcall函數的大。由於_cdecl調用方式的參數內存棧由調用者維護,所以變長參數的函數能(也只能)使用這種調用約定。相應的代碼實例見網盤:附:幾乎我們寫的每一個WINDOWSAPI函數都是__stdcall類型的,為什麼??首先,我們談一下兩者之間的區別:WINDOWS的函數調用時需要用到棧(STACK,一種先入後出的存儲結構)。當函數調用完成後,棧需要清除,這裡就是問題的關鍵,如何清除??如果我們的函數使用了_cdecl,那麼棧的清除工作是由調用者,用COM的術語來講就是客戶來完成的。這樣帶來了一個棘手的問題,不同的編譯器產生棧的方式不盡相同,那麼調用者能否正常的完成清除工作呢?答案是不能。如果使用__stdcall,上面的問題就解決了,函數自己解決清除工作。所以,在跨(開發)平台的調用中,我們都使用__stdcall(雖然有時是以WINAPI的樣子出現)。那麼為什麼還需要_cdecl呢?當我們遇到這樣的函數如fprintf()它的參數是可變的,不定長的,被調用者事先無法知道參數的長度,事後的清除工作也無法正常的進行,因此,這種情況我們只能使用_cdecl。到這裡我們有一個結論,如果你的程序中沒有涉及可變參數,最好使用__stdcall關鍵字
C語言函數調用
函數是一個獨立的程序段,它執行具體的,明確的任務。也就是說函數是我們預先編寫好的一段處理某個具體問題的代碼。這樣複雜的問題就會變得簡單~~
C語言中我們通常會使用函數來執行一系列指令。一次函數調用將在一個程序內的任何一個給定點上執行一系列指令。函數可以根據需要被多次調用。如果一個程序中會多次的執行同一個任務,那麼函數的使用將會大大的減少程序的代碼量,而且包含函數的程序還便於維護和修改程序,因為我們只需要修改函數就可以對程序中的多處進行修改了。
函數有時有返回值 有時可以沒有返回值(只做一些操作 不返回)
你問題具體點就更好回答了
C語言如何調用函數
C語言中,函數調用的一般形式為:
函數名(實際參數表)
對無參函數調用時則無實際參數表。實際參數表中的參數可以是常數、變數或其它構造類型數據及表達式。各實參之間用逗號分隔。
#includestdio.h
int fun(int x, int y); // 函數聲明,如果函數寫在被調用處之前,可以不用聲明
void main()
{
int a=1, b=2, c;
c = fun(a, b); // 函數的調用,調用自定義函數fun,其中a,b為實際參數,傳遞給被調用函數的輸入值
}
// 自定義函數fun
int fun(int x, int y) // 函數首部
{ // {}中的語言為函數體
return xy ? x : y; // 返回x和y中較大的一個數
}
擴展資料
C語言中不允許作嵌套的函數定義。因此各函數之間是平行的,不存在上一級函數和下一級函數的問題。但是C語言允許在一個函數的定義中出現對另一個函數的調用。
這樣就出現了函數的嵌套調用。即在被調函數中又調用其它函數。這與其它語言的子程序嵌套的情形是類似的。其關係可表示如圖。
圖表示了兩層嵌套的情形。其執行過程是:執行main函數中調用a函數的語句時,即轉去執行a函數,在a函數中調用b 函數時,又轉去執行b函數,b函數執行完畢返回a函數的斷點繼續執行,a函數執行完畢返回main函數的斷點繼續執行。
參考資料:函數調用_百度百科
C語言函數的調用
函數fun(int a,int b)僅僅是完成了形參a和b的交換,
交換的結果並不改變實參c[i]和c[i+1],作如下修改
#includestdio.h
void fun(int *a,int *b)
{
int t ;
t=*a;*a=*b;*b=t;
}
main()
{
int c[10]={1,2,3,4,5,6,7,8,9,0},i;
for(i=0;i10;i+=2) fun(c[i],c[i+1]);
for(i=0;i10;i++) printf(“%d”,c[i]);
printf(“\n”);
}
C語言的函數調用規則
請問C語言函數的調用規則是什麼,例如主函數main、 函數A 、函數B,這3者的順序能否打亂,
可以打亂,依個人習慣。
如果 A函數放最前,能否直接調用B函數?還是只能後面的函數調用前面的函數,還是說只要在A函數中聲明B函數就能夠調用後面的B函數。?
A調B,或B調A都可以,如果B在A後,B可直接調用A,否則,先在B前聲明一下A再調用A。
main函數的有沒有固定的位置,例如要放最前面?或最後面?
沒有要求,一般單獨一個C文件放main函數。
我需要程序調用這一部分的 語法描述圖,因為規則不是固定,所以畫起來有點難度,有沒人能提供 程序調用的語法描述圖 就是類似 void —- ident—-(—-)—-{—-語句…… 這樣的圖。加分加分!!
不明白,寫兩個簡單函數實驗一下就知道了,這樣印象會深刻點不容易忘。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/249355.html