新聞中心
c語言中一個函數(shù)的聲明和定義有區(qū)別嗎
區(qū)別:定義也是聲明,extern聲明不是定義。定義分配存儲空間,而聲明不會。通過使用extern關(guān)鍵字聲明變量名而不定義它。 事實上它只是說明變量定義在程序的其他地方。程序中變量可以聲明多次,但只能定義一次。
創(chuàng)新互聯(lián)建站專注于策勒企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站建設(shè)。策勒網(wǎng)站建設(shè)公司,為策勒等地區(qū)提供建站服務(wù)。全流程按需制作網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
聲明與定義的區(qū)別:函數(shù)的聲明與函數(shù)的定義形式上十分相似,但是二者有著本質(zhì)上的不同。聲明是不開辟內(nèi)存的,僅僅告訴編譯器,要聲明的部分存在,要預留一點空間。定義則需要開辟內(nèi)存。
樓主可以這樣想,C語言中,無論是常量,變量,函數(shù),只有先定義才能使用的。在函數(shù)定義時,大腦要往一般的常量,變量定義的方向,切忌先不要想函數(shù)的別的。定義好后,把函數(shù)的定義先放一邊,不管它。
不同文件中:fun.h:void fun(); //函數(shù)聲明 fun.c:extern int a; //聲明,不再分配內(nèi)存,extern關(guān)鍵字表示此變量已在其它地方定義。
由于C語言的編譯,是對c/cpp文件的內(nèi)容從上至下編譯。一般子函數(shù)(用戶定義的函數(shù))放在主函數(shù)(main函數(shù))后面的話,main函數(shù)前面就該有聲明,不然編譯系統(tǒng)將無法識別到子函數(shù)。
對于變量來說,聲明和定義幾乎是相同的,尤其是在同一個文件中聲明或者定義變量。但如果是使用其他源文件中的變量,可以使用extern關(guān)鍵字進行聲明,表示該變量由其他人定義,我這邊僅僅是拿過來用一下。
函數(shù)聲明與函數(shù)定義的區(qū)別
1、聲明與定義的區(qū)別:函數(shù)的聲明與函數(shù)的定義形式上十分相似,但是二者有著本質(zhì)上的不同。聲明是不開辟內(nèi)存的,僅僅告訴編譯器,要聲明的部分存在,要預留一點空間。定義則需要開辟內(nèi)存。
2、函數(shù)的聲明與函數(shù)的定義形式上十分相似,但是二者有著本質(zhì)上的不同。聲明是不開辟內(nèi)存的,僅僅告訴編譯器,要聲明的部分存在,要預留一點空間。定義則需要開辟內(nèi)存。
3、總之,函數(shù)定義是系統(tǒng)要求的,不定義就錯誤,而函數(shù)聲明實際上不定義也行,但為了方便和減少錯誤,人為規(guī)定要聲明。
4、函數(shù)聲明只是一種協(xié)議,它告訴了調(diào)用者在調(diào)用這個函數(shù)之前需要給他什么參數(shù),一般參數(shù)是通過寄存器或者壓棧的方式傳給被調(diào)用函數(shù)的,具體這些參數(shù)如何使用以及返回什么值到相應(yīng)的寄存器里返回給調(diào)用者則是定義所描述的。
5、函數(shù)定義若在main()以前,可略去 函數(shù)聲明。函數(shù)定義若在main()以后,main()以前要有 函數(shù)聲明,又叫函數(shù)原型聲明,分號結(jié)束,可以帶形參,寫出形參名,也可以只寫類型,不寫形參名字。
6、函數(shù)定義:“定義”的意思,即為該函數(shù)下定義——這個函數(shù)具體有什么功能(函數(shù)體)。
c語言中對函數(shù)的定義與對函數(shù)的聲明有何不同
樓主可以這樣想,C語言中,無論是常量,變量,函數(shù),只有先定義才能使用的。在函數(shù)定義時,大腦要往一般的常量,變量定義的方向,切忌先不要想函數(shù)的別的。定義好后,把函數(shù)的定義先放一邊,不管它。
聲明與定義的區(qū)別:函數(shù)的聲明與函數(shù)的定義形式上十分相似,但是二者有著本質(zhì)上的不同。聲明是不開辟內(nèi)存的,僅僅告訴編譯器,要聲明的部分存在,要預留一點空間。定義則需要開辟內(nèi)存。
函數(shù)的聲明與函數(shù)的定義的區(qū)別:聲明:一般在頭文件里,對編譯器說:這里我有一個函數(shù)叫function() 讓編譯器知道這個函數(shù)的存在。定義:一般在源文件里,具體就是函數(shù)的實現(xiàn)過程 寫明函數(shù)體。
// 函數(shù)定義{ return a + b;}void main(){ int num1, num2; scanf(%d%d, &num1, &num2); printf(兩個數(shù)的和為%d, sum(num1, num2)); }以上這個程序同樣是可以正確編譯運行的。
因為只有定義才分配存儲空間。例如:extern int a其中變量a是在別的文件中定義的。前者是定義性聲明(defining declaration)或者稱為定義(definition),而后者是引用性聲明(referncing declaration)。
標題名稱:c語言函數(shù)和聲明區(qū)別 c語言聲明函數(shù)的作用
文章鏈接:http://fisionsoft.com.cn/article/dddjshe.html