函數(shù)聲明是函數(shù)定義嗎
其實(shí)函數(shù)聲明是函數(shù)定義嗎的問(wèn)題并不復(fù)雜,但是又很多的朋友都不太了解函數(shù)聲明與函數(shù)定義中的函數(shù)類型,因此呢,今天小編就來(lái)為大家分享函數(shù)聲明是函數(shù)定義嗎的一些知識(shí),希望可以...
其實(shí)函數(shù)聲明是函數(shù)定義嗎的問(wèn)題并不復(fù)雜,但是又很多的朋友都不太了解函數(shù)聲明與函數(shù)定義中的函數(shù)類型,因此呢,今天小編就來(lái)為大家分享函數(shù)聲明是函數(shù)定義嗎的一些知識(shí),希望可以幫助到大家,下面我們一起來(lái)看看這個(gè)問(wèn)題的分析吧!
文章目錄:
- 1、什么是函數(shù)聲明
- 2、C++中函數(shù)聲明與函數(shù)原型有什么區(qū)別
- 3、在C語(yǔ)言中,一個(gè)函數(shù)一般由兩個(gè)部分組成,它們是——和——
- 4、C++中,函數(shù)的聲明與函數(shù)的定義有什么區(qū)別?
- 5、今天看C語(yǔ)言書(shū)上說(shuō)函數(shù)只能定義一次,而聲明可以有好多個(gè),請(qǐng)高手給我...
什么是函數(shù)聲明
1、函數(shù)聲明是編程中非常重要的一部分,它告訴編譯器有關(guān)函數(shù)名稱、返回類型以及函數(shù)參數(shù)的信息。函數(shù)聲明有助于在程序的其他部分引用該函數(shù),并且可以為程序員提供關(guān)于函數(shù)功能及其用途的明確指示。通過(guò)函數(shù)聲明,我們可以指定函數(shù)的參數(shù)類型、數(shù)量以及函數(shù)的返回類型。這對(duì)于代碼的可讀性和維護(hù)性至關(guān)重要。
2、簡(jiǎn)單點(diǎn)說(shuō),就是形式參數(shù)給個(gè)形式,實(shí)際參數(shù)放進(jìn)去用。例如:fun(a);函數(shù)聲明的用處是告訴編譯器聲明的函數(shù)在后面有定義。如果你將函數(shù)定義放在調(diào)用的前面,就不需要聲明。另外聲明就是函數(shù)定義后面加上分號(hào)的形式。例如:定義是fun(int a)。聲明就是fun(int a);。
3、“函數(shù)定義”是指對(duì)函數(shù)功能的確立,包括指定函數(shù)名,函數(shù)值類型、形參類型、函數(shù)體等,它是一個(gè)完整的、獨(dú)立的函數(shù)。
C++中函數(shù)聲明與函數(shù)原型有什么區(qū)別
1、主要區(qū)別我覺(jué)得有以下一些 第一:聲明一般在主函數(shù)之前,而定義不一定。第二:定義也是一種聲明(放在主函數(shù)前面),但聲明不代表定義。第三:根據(jù)c++ primer中的闡述,函數(shù)聲明只是告訴有這樣一個(gè)函數(shù),但并不給他分配內(nèi)存空間,只有當(dāng)函數(shù)被定義后才會(huì)分配內(nèi)存空間。
2、原型相當(dāng)于聲明了這個(gè)函數(shù)并且告知了這個(gè)函數(shù)的實(shí)現(xiàn);聲明當(dāng)然僅僅是聲明,比如說(shuō)外面有一個(gè)xxx方法,但有沒(méi)有是另外一會(huì)事。
3、C90 標(biāo)準(zhǔn)新增了函數(shù)原型,舊式的編譯器可能無(wú)法識(shí)別(稍后我們將介紹,如果使用這種編譯器應(yīng)該怎么做)。函數(shù)原型是一種聲明形式,告知編譯器正在使用某函數(shù),因此函數(shù)原型也被稱為函數(shù)聲明(function declaration)。函數(shù)原型還指明了函數(shù)的屬性。
4、函數(shù)是C語(yǔ)言中一個(gè)命名的語(yǔ)句塊,允許通過(guò)函數(shù)名稱進(jìn)行多次調(diào)用。函數(shù)由函數(shù)原型和函數(shù)體構(gòu)成,其中函數(shù)原型相當(dāng)于函數(shù)聲明,包括返回值類型、函數(shù)名和參數(shù)列表。函數(shù)名需符合標(biāo)識(shí)符命名規(guī)則,并在作用域內(nèi)保持唯一性,C語(yǔ)言不支持函數(shù)名重載。參數(shù)列表可以為空,也可包含一個(gè)或多個(gè)參數(shù)。
5、函數(shù)的聲明。函數(shù)的聲明是需要帶分號(hào)的。函數(shù)聲明是用來(lái)擴(kuò)展函數(shù)的作用域。比如被調(diào)函數(shù)在其它文件,或者在同一個(gè)文件中卻是在主調(diào)函數(shù)的下面,那么就需要在調(diào)用前聲明。聲明的格式是 ret_type func_name(arg_list);這個(gè)是必須帶分號(hào)的。2 函數(shù)的實(shí)現(xiàn)。當(dāng)定義一個(gè)函數(shù)的時(shí)候,不可以帶分號(hào)。
6、聲明部分 定義部分//或者說(shuō)算法 C語(yǔ)言中函數(shù)包括函數(shù)首部和函數(shù)體,函數(shù)首部又包括函數(shù)類型、函數(shù)名、形參、有的還包括存儲(chǔ)方式等,函數(shù)體是函數(shù)實(shí)現(xiàn)的具體功能。
在C語(yǔ)言中,一個(gè)函數(shù)一般由兩個(gè)部分組成,它們是——和——
1、形參為a,b,均為整型量。a,b的具體值是由主調(diào)函數(shù)在調(diào)用時(shí)傳送過(guò)來(lái)的。在{}中的函數(shù)體內(nèi),除形參外沒(méi)有使用其它變量,因此只有語(yǔ)句而沒(méi)有聲明部分。在max函數(shù)體中的return語(yǔ)句是把a(bǔ)(或b)的值作為函數(shù)的值返回給主調(diào)函數(shù)。有返回值函數(shù)中至少應(yīng)有一個(gè)return語(yǔ)句。
2、main()---在c語(yǔ)言中稱之為“主函數(shù)”,一個(gè)c程序有且僅有一個(gè)main函數(shù),任何一個(gè)c程序總是從main函數(shù)開(kāi)始,main函數(shù)后面的一對(duì)圓括號(hào)不能省略。 被大括號(hào){ }括起來(lái)的內(nèi)容稱為main函數(shù)的函數(shù)體,這部分內(nèi)容就是計(jì)算機(jī)要的內(nèi)容。
3、組成c程序的基本是函數(shù),其組成部分包括文件包含、宏定義、函數(shù)說(shuō)明、變量和一個(gè)或若干個(gè)函數(shù)。C語(yǔ)言程序由以下內(nèi)容構(gòu)成:頭文件:包含程序必需的標(biāo)準(zhǔn)庫(kù)函數(shù)頭文件的包含語(yǔ)句。函數(shù)定義:定義程序中要使用的函數(shù)。變量聲明:聲明程序中要使用的變量。
4、一個(gè)C語(yǔ)言程序通常由以下幾個(gè)主要部分組成: 預(yù)處理器指令(Preprocessor directives):用于控制編譯過(guò)程,例如#include用于包含頭文件,#define用于定義宏等。 函數(shù)(Functions):C語(yǔ)言是一種過(guò)程化編程語(yǔ)言,函數(shù)是C程序的基本構(gòu)建塊。函數(shù)由函數(shù)頭和函數(shù)體組成。
5、C語(yǔ)言程序的構(gòu)造要素主要包括以下幾個(gè)部分:首先,頭文件(Header Files)引入外部庫(kù)和自定義函數(shù)聲明,如stdio.h、stdlib.h和math.h等,提供了輸入輸出和數(shù)學(xué)函數(shù)。其次,全局變量(Global Variables)作為程序中可跨函數(shù)訪問(wèn)的數(shù)據(jù)存儲(chǔ),如計(jì)數(shù)器或配置設(shè)置。
C++中,函數(shù)的聲明與函數(shù)的定義有什么區(qū)別?
1、函數(shù)的聲明與函數(shù)的定義的區(qū)別:聲明:一般在頭文件里,對(duì)編譯器說(shuō):這里我有一個(gè)函數(shù)叫function() 讓編譯器知道這個(gè)函數(shù)的存在。定義:一般在源文件里,具體就是函數(shù)的實(shí)現(xiàn)過(guò)程 寫明函數(shù)體。你還可以這樣理解:首先下圖中的程序時(shí),電腦是從上到下的。
2、c++中定義和聲明的區(qū)別:變量的聲明和定義:從編譯原理上來(lái)說(shuō),聲明是僅僅告訴編譯器,有個(gè)某類型的變量會(huì)被使用,但是編譯器并不會(huì)為它分配任何內(nèi)存。而定義就是分配了內(nèi)存。如果是指函數(shù)的聲明和定義:聲明一般在頭文件里,使編譯器明白這里有一個(gè)函數(shù),讓編譯器知道這個(gè)函數(shù)的存在。
3、函數(shù)的定義是指對(duì)函數(shù)功能的確立,包括指定函數(shù)名,函數(shù)值類型、形參及其類型以及函數(shù)體等,它是一個(gè)完整的、獨(dú)立的函數(shù)。
4、函數(shù)聲明時(shí)只需寫出形參類型。函數(shù)定義時(shí)必須寫出形參類型和變量名。C語(yǔ)言中的標(biāo)準(zhǔn)函數(shù)printf便使用這種機(jī)制。在聲明不確定形參的函數(shù)時(shí),形參部分可以使用省略號(hào)“…”代替。“…”告訴編譯器,在函數(shù)調(diào)用時(shí)不檢查形參類型是否與實(shí)參類型相同,也不檢查參數(shù)個(gè)數(shù)。
今天看C語(yǔ)言書(shū)上說(shuō)函數(shù)只能定義一次,而聲明可以有好多個(gè),請(qǐng)高手給我...
就比如說(shuō) 申明函數(shù) void fun() ; 而函數(shù)的定義是函數(shù)的實(shí)現(xiàn)部分。比如:void fun() { ... //具體實(shí)現(xiàn)語(yǔ)句 } 因?yàn)樵贑語(yǔ)言中不允許函數(shù)的重寫,所以一個(gè)函數(shù)只能定義一次。
如果不寫函數(shù)類型說(shuō)明,也可以把函數(shù)定義寫在函數(shù)調(diào)用之前: ? 123456789 double square ( double x){ return x * x ;}int main(void){ printf(%f\n , square() ); return 0;} 這表明函數(shù)定義也具有對(duì)函數(shù)名的類型加以說(shuō)明的效果,因此從這個(gè)意義上來(lái)說(shuō),函數(shù)定義也是一種對(duì)函數(shù)類型的說(shuō)明。
你把大括號(hào)的位置放錯(cuò)了,sushu函數(shù)被定義在了main函數(shù)里面,但是按照C語(yǔ)言的規(guī)定,函數(shù)不允許嵌套定義,所以你的sushu相當(dāng)于沒(méi)有定義(不知為何你的編譯器沒(méi)有報(bào)錯(cuò)說(shuō)不允許在函數(shù)內(nèi)定義函數(shù))。解決方法是把你最后面多出來(lái)的大括號(hào)移到main函數(shù)最后面。
頭文件:因?yàn)樗谐绦蚨际褂靡恍┕潭üδ?,比如在屏幕上顯示,比鍵盤讀入數(shù)據(jù)等。而實(shí)現(xiàn)這些功能代碼就有幾百行,還有一般學(xué)生不懂的匯編語(yǔ)言在里面。為了方便,就將這部分代碼作為一個(gè)文件由編程自己添加到我們寫好程序文件中。
書(shū)上說(shuō)頭文件中只能放置函數(shù)原型,宏的定義,結(jié)構(gòu)體變量的聲明和靜態(tài)全局變量的定義,這是為了可讀性的考慮,因?yàn)榱?xí)慣上頭文件里都放這些東西,這樣源文件里能看起來(lái)清爽一些,要是把主函數(shù)都放到頭文件里了,找這個(gè)函數(shù)要找半天,這樣就失去了頭文件的意義了。
我想說(shuō),如果這道題有正確的編譯結(jié)果的話就是奇異的。因?yàn)?,?shū)上說(shuō)得很明確,實(shí)參在進(jìn)行函數(shù)調(diào)用的時(shí)候,必須有確定的值,這樣才能把這些值傳遞給形參。所以這道題編譯時(shí)不成功的,因?yàn)閏的值不確定。并且,這里并沒(méi)有return語(yǔ)句,所以就算c能夠算出來(lái)也輸出不了。
好了,文章到此結(jié)束,希望可以幫助到大家。
本文鏈接:http:///bian/225574.html