c語言如何實現函式的呼叫,C語言如何呼叫函式

2022-03-29 07:35:42 字數 6002 閱讀 8361

1樓:匿名使用者

函式名加(實參),這樣吧...舉個例子你看一下...

int add(int x,int y)

//定義一個z=x+y的函式

int main()//主函式

理解了沒...還沒的話...仔細看下教材...這個問題很容易解決的...

2樓:匿名使用者

如何呼叫c語言寫的庫,如a.lib等,有對應的庫標頭檔案a.h。假設a.h中定義了函式:

int whycoding(int a, float b);

做法是,

/* cpp_a.h */

extern "c"

或/* cpp_a.h */

extern "c"

從上面可以看出,extern "c" 是用在c和c++之間的橋樑。之所以需要這個橋樑是因為c編譯器編譯函式時不帶

函式的型別資訊,只包含函式符號名字,如c編譯器把函式int a(float x)編譯成類似_a這樣的符號,c聯結器只要

找到了呼叫函式的符號,就可以連線成功,它假設引數型別資訊是正確的,這是c編譯聯結器的缺點。而c++

編譯器為了實現函式過載,編譯時會帶上函式的型別資訊,如他把上面的a函式可能編譯成_a_float這樣的

符號為了實現過載,注意它還是沒有帶返回值得資訊,這也是為什麼c++不支援採用函式返回值來區別函式

過載的原因之一,當然,函式的使用者對函式返回值的處理方式(如忽略)也是重要原因。

基於以上,c呼叫c++,首先需要用封裝函式把對c++的類等的呼叫封裝成c函式以便c呼叫,於是extern "c" 的

作用是:讓編譯器知道這件事,然後以c語言的方式編譯和連線封裝函式.(通常是把封裝函式用c++編譯器按c++

方式編譯,用了extern "c" 後,編譯器便依c的方式編譯封裝介面,當然介面函式裡面的c++語法還是按c++方式

編譯;對於c語言部分--呼叫者,還是按c語言編譯;分別對c++介面部分和c部分編譯後,再連線就可以實現c

呼叫c++了).

相反,c++呼叫c函式,extern "c" 的作用是:讓c++聯結器找呼叫函式的符號時採用c的方式,即使用_a而不是

_a_float來找呼叫函式。

3樓:尖子生管理員小宇

本次課程主要講解vs13下如何使用輸出函式printf,以及相關的格式輸出說明符的呼叫,對於不是計算機專業想要學程式設計的學生來說,是一個很好的基礎教程,希望大家可以認真跟我一起從0基礎開始學開發!

4樓:匿名使用者

void my()

{}void main()

c語言如何呼叫函式

5樓:墨陌沫默漠末

c語言中,函式呼叫的一般形式為:

函式名(實際參數列)

對無參函式呼叫時則無實際參數列。實際參數列中的引數可以是常數、變數或其它構造型別資料及表示式。各實參之間用逗號分隔。

#include

int fun(int x, int y); // 函式宣告,如果函式寫在被呼叫處之前,可以不用宣告

void main()

// 自定義函式fun

int fun(int x, int y)  // 函式首部

中的語言為函式體

return x>y ? x : y;  // 返回x和y中較大的一個數

}這樣就出現了函式的巢狀呼叫。即在被調函式中又呼叫其它函式。這與其它語言的子程式巢狀的情形是類似的。其關係可表示如圖。

圖表示了兩層巢狀的情形。其執行過程是:執行main函式中呼叫a函式的語句時,即轉去執行a函式,在a函式中呼叫b 函式時,又轉去執行b函式,b函式執行完畢返回a函式的斷點繼續執行,a函式執行完畢返回main函式的斷點繼續執行。

6樓:天雲一號

c語言呼叫函式就是先定義並宣告函式,之後再根據定義函式的格式呼叫。

下面舉例來說明函式呼叫方法:

#include

int fun(int x, int y); // 函式宣告,如果函式寫在被呼叫處之前,可以不用宣告

void main()

// 自定義函式fun

int fun(int x, int y)  // 函式首部中的語言為函式體

return x>y ? x : y;  // 返回x和y中較大的一個數}

7樓:尖子生管理員小宇

本次課程主要講解vs13下如何使用輸出函式printf,以及相關的格式輸出說明符的呼叫,對於不是計算機專業想要學程式設計的學生來說,是一個很好的基礎教程,希望大家可以認真跟我一起從0基礎開始學開發!

8樓:丘燦墨梓榆

static

靜態變數

因為它定義在函式中,所以是區域性靜態變數。區域性靜態變數,在函式返回後儲存單元不釋放;下一次呼叫該函式時,該變數為上次函式返回時的值。

9樓:

下面這個是已經除錯好的,希望你參考一下

#include

#definen10

void

main()

a[count]=sum;

sum=0;

count++;

j=0;}}

for(i=0;i

printf("%d\n

",a[i]);

printf("there

are%d

number

inthis

string\n",count);}

10樓:鄢綠竺元英

#include

#include

float

jis(float);

main()

float

jis(float

x)這樣就對了,對了一般不需要用double,float的精度已經夠了!還有用數學函式sinx時一定要加上標頭檔案#include

希望對你有所幫助!

11樓:期待臺灣迴歸

#include

int sum(int x,int y) //宣告一個sum函式

main()

我在您的源程式基礎上做了一定修改,並在關鍵位置給予了註釋。如果對您有幫助,請採納我的回答

12樓:寶燕伍依霜

1)在棧上建立。在執行函式時,函式內區域性變數的儲存單元都在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內建於處理器的指令集中,一般使用暫存器來存取,效率很高,但是分配的記憶體容量有限。

2)從堆上分配,亦稱動態記憶體分配。程式在執行的時候用malloc或new申請任意多少的記憶體,程式設計師自己負責在何時用free或delete來釋放記憶體。動態記憶體的生存期由程式設計師自己決定,使用非常靈活。

3)從靜態儲存區域分配。記憶體在程式編譯的時候就已經分配好,這塊記憶體在程式的整個執行期間都存在。例如全域性變數,static變數。

4)文字常量分配在文字常量區,程式結束後由系統釋放。

5)程式**區。

13樓:匿名使用者

建議你把不用的變數不要用,例如那個s,你也沒用到什麼,還有你的結果在sum函式中顯示了,為什麼還要用到return z這個呢,我有點不明白;.

14樓:匿名使用者

少一個頭函式,住函式沒有返回值,應該用void。

#include

#include

int sum(int x,int y)

void main()

15樓:

你這個編譯是成功的.

在函式體內的是實參或是說參加運算的為實參.

形參就是在函式體外的.

16樓:冀峰馬躍

靜態變數麼

保留上一次的值

17樓:匿名使用者

#include

int sum(int x,int y)

void main()

c語言中怎樣呼叫函式(舉個例子)

18樓:農家小子之

c語言中呼叫函式的方法及步驟:

工具/原料:c語言

1、首先需要輸入想要呼叫的函式。

2、然後當輸入一個括號後,即可觀察他的引數。

3、接著在對應的引數中輸入引數值。

4、然後,系統會發生一個警告。

5、接著需要呼叫它相應的標頭檔案。

6、最後再次編譯,發現沒有任何警告和錯誤即可。

19樓:求學解惑

我想c語言中呼叫函式分以下內幾部:

1)根據呼叫的函式名找到函式入口;

2)在棧中審請呼叫函式中的引數及函式體內定義的變數的記憶體空間3)函式執行完後,釋放函式在棧中的審請的引數和變數的空間,最後返回值(如果有的話)

20樓:

將函式寫在主程式後面,主函式前面應該宣告,我從前是這樣學的,現在的編譯軟體可能相容了吧,如果函式多了宣告也容易看,這個函式的宣告就在main前面把int add(int x,int y);寫上最好了,如果不用宣告則將整個函式放在main以前,以後子函式多了也可以方便的看到定義了哪些子函式,如果程式很大,宣告放在一個檔案裡,函式實現放在另一個檔案裡,好長時間沒動了,當時好像老師是這麼說過,main前面最好加型別int ,好給程式最後一個返回值比如return 0;我學的本來就不好,不在這裡瞎指揮了,如果錯了希望大家多多原諒,因為時間太長了,記不住了

21樓:和恢恑憰怪

很簡單,例如:

int fun()

int main()

main函式呼叫了fun函式,是不是很easy啊

22樓:匿名使用者

#包括中

主要()

詮釋新增(詮釋,詮釋y)

c語言如何呼叫函式

23樓:大基數減重

開啟ubuntu,並在目標路徑下開啟一個終端。

選定一個路徑,使用touch命令建立三個檔案,function.h,function.c,test.c,分別用來做函式標頭檔案、函式原始檔以及測試檔案。

首先用vim命令與vsplit依次開啟三個檔案。

在標頭檔案中新增重複包含的巨集,並新增四則運算的函式宣告。

在function.c中將function.h包含進來,並具體實現四個方法。注意出發要對除數是否為0進行判斷。

然後編寫測試程式進行測試。總的程式**如下:

儲存所有的程式並退出,使用gcc進行編譯,並執行得到的結果如下。這就是函式的宣告、定義以及呼叫。

語言的作用域規則:是一組確定一部分**是否「可見」或可訪問另一部分**和資料的規則。

c語言中的每一個函式都是一個獨立的**塊。一個函式的**塊是隱藏於函式內部的,不能被任何其它函式中的任何語句(除呼叫它的語句之外)所訪問(例如,用g o t o語句跳轉到另一個函式內部是不可能的)。

構成一個函式體的**對程式的其它部分來說是隱蔽的,它既不能影響程式其它部分,也不受其它部分的影響。換言之,由於兩個函式有不同的作用域,定義在一個函式內部的**資料無法與定義在另一個函式內部的**和資料相互作用。

c語言中函式的呼叫怎麼實現啊

24樓:南門蘭聲卯

定義一個函式,就可以呼叫了啊

比如定義一個函式,實現引數a+引數b,返回值intfu_add(int

a,int

b)這是一個最簡單的函式,函式名稱為fu_add,函式有兩個引數,int

a,int

b函式將兩個值相加,並返回相加的值

呼叫的時候

intmain()

25樓:仍曼華詩緞

什麼意思啊?

直接呼叫不就得了?

例如void

fun()

在main()函式中直接呼叫使用語句

fun();就行了

c語言題目(函式呼叫),C語言題目(函式呼叫)

a宣告時形參名可以忽略也可以任意合法的變數名,但是其型別不能忽略。以上的講,可能你不好理解,我來告訴你吧 a型別必須要一樣,而且數量一定要相同,宣告形參可以寫也可以不寫 bc語言中,在宣告函式的時候其形式引數可以只是資料型別不用寫出具體的識別符號,如果要寫出具體的識別符號的話,就一定要和函式定義的識...

C語言中函式呼叫問題,C語言中函式的呼叫

首先我們來說一下,你這個程式是有很大的問題的。函式有且只有唯一一個返回值,當程式執行到return的時候,這個函式就結束並返回了。所以,你這裡寫2個return來返回最大值和最小值是不可能的。再者,如果你想使用返回值作為最大值,最小值的傳遞,那麼在main函式中,你呼叫star函式的時候需要一個變數...

c語言的函式問題,c語言函式呼叫問題

可以不寫,但是要把你的自定義函式寫在主函式前面才行。就是說把z的值返回到主函式,本例中就是把z的值返回給c。不能不寫的,否則當編譯器編譯到你main函式時,由於還沒編譯到下面的max定義。所以它找不到max到底是什麼符號。一般申明都寫在函式後面的,否則,出了main外,其他函式看不到max的申明的。...