C語言中調(diào)用函數(shù)的方法及步驟:
創(chuàng)新互聯(lián)建站是專業(yè)的鹽池網(wǎng)站建設(shè)公司,鹽池接單;提供網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行鹽池網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
工具/原料:C語言
1、首先需要輸入想要調(diào)用的函數(shù)。
2、然后當輸入一個括號后,即可觀察他的參數(shù)。
3、接著在對應的參數(shù)中輸入?yún)?shù)值。
4、然后,系統(tǒng)會發(fā)生一個警告。
5、接著需要調(diào)用它相應的頭文件。
6、最后再次編譯,發(fā)現(xiàn)沒有任何警告和錯誤即可。
工具/材料
Ubuntu16.04
gcc+vim
01
打開Ubuntu,并在目標路徑下開啟一個終端。
02
選定一個路徑,使用touch命令創(chuàng)建三個文件,function.h,function.c,test.c,分別用來做函數(shù)頭文件、函數(shù)源文件以及測試文件
03
這里以四則運算函數(shù)為例說明函數(shù)的編寫流程與調(diào)用流程。首先用vim命令與vsplit依次打開三個文件。
04
在頭文件中添加重復包含的宏,并添加四則運算的函數(shù)聲明。
05
在function.c中將function.h包含進來,并具體實現(xiàn)四個方法。注意出發(fā)要對除數(shù)是否為0進行判斷。
06
然后編寫測試程序進行測試。總的程序代碼如下:
07
保存所有的程序并退出,使用gcc進行編譯,并運行得到的結(jié)果如下。這就是函數(shù)的聲明、定義以及調(diào)用。
您好,很高興回答您的問題。
c語言中,程序運行的時候,首先是找到主函數(shù)來運行,其他的函數(shù)只有在被調(diào)用的時候才會運行。所以對于您給定的程序,系統(tǒng)找到主函數(shù)運行,函數(shù)體的第一句話是對被調(diào)用的函數(shù)進行申明,然后定義n為整型變量,s為雙精度實行變量,并賦初始值為0。接下來從鍵盤輸入n的值,然后用n和s作為實參,調(diào)用fun函數(shù),那么程序就會轉(zhuǎn)到fun函數(shù)中運行。定義變量i,然后運行循環(huán)語句,i從1到n,對每一個i進行判斷,若i能整除5或者能整除9,那么就把1.0除以i的值加入到s中,直到1- n中所有滿足條件的值都被加入到s中,整個循環(huán)結(jié)束,s的值返回到主函數(shù)中,然后進行輸出。
以上就是函數(shù)調(diào)用的過程,請您批評指正!
當程序編譯后link,講函數(shù)地址保存在段寄存器中,代碼段內(nèi),當某處調(diào)用此函數(shù)時(匯編代碼CALL),將此地址壓入棧中,并且根據(jù)指令地址寄存器(程序計數(shù)器內(nèi))中保存的值計算到該函數(shù)地址的偏移量,隨后通過__cdecl等調(diào)用方式將參數(shù)和局部變量壓入棧中。具體的過程比較復雜,具體應該參照PE結(jié)構(gòu)等。比較深入,我也只是粗略了解
可以參考計算機組成與設(shè)計一書
函數(shù)調(diào)用過程如下:
參數(shù)入棧
執(zhí)行流轉(zhuǎn)到函數(shù)開始地址
執(zhí)行函數(shù)
函數(shù)執(zhí)行完畢,返回。
平衡堆棧
大致是這樣,根據(jù)調(diào)用約定不同,可能會有稍許差別。
在使用一個函數(shù)之前必須先對他進行聲明:
//void B();聲明B函數(shù)的存在。void A(){B();//非法,程序執(zhí)行到此時并不知道B函數(shù)的存在。}void B(){}
或者
#include stdio.h
#include stdlib.h
#include math.h
int fa(int n)
{
int a;
for(a=2;a=sqrt(n*1.0),n%a!=0;a++);
if(asqrt(n*1.0))
return(1);
else
return(0);
}
void main( )
{
int n,q;
scanf("%d",n);
擴展資料
#include stdio.h
#include stdlib.h
#include math.h
int fa(int n)
{
int a;
for(a=2;a=sqrt(n*1.0),n%a!=0;a++);
if(asqrt(n*1.0))
return(1);
else
return(0);
}
void main( )
{
int n,q;
scanf("%d",n);
if(fa(n)==1)
printf("n");
else
printf("y");
system("pause");
exit(0);
}
參考資料:百度百科 - C語言函數(shù)
分享名稱:c語言函數(shù)調(diào)用的程序,C語言調(diào)用函數(shù)
新聞來源:http://muchs.cn/article38/hssopp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、App設(shè)計、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司、品牌網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)