函式宣告和函式定義的關係是什麼,C 中,函式的宣告與函式的定義有什麼區別?

2022-02-19 12:40:12 字數 5725 閱讀 2271

1樓:暴走少女

函式先宣告才可以被呼叫,如同變數先宣告後使用。函式的宣告也可以和函式定義分開。一個函式只可以定義一次,但是可以宣告多次。

「函式定義」是指對函式功能的確立,包括指定函式名,函式值型別、形參型別、函式體等,它是一個完整的、獨立的函式單位。

而「函式宣告」的作用則是把函式的名字、函式型別以及形參型別、個數和順序通知編譯系統,以便在呼叫該函式時系統按此進行對照檢查(例如函式名是否正確,實參與形參的型別和個數是否一致)。

擴充套件資料:

兩者區別:

函式的宣告與函式的定義形式上十分相似,但是二者有著本質上的不同。宣告是不開闢記憶體的,僅僅告訴編譯器,要宣告的部分存在,要預留一點空間。定義則需要開闢記憶體。

1、函式的定義

函式的定義是一個完整的函式單元:

1)包含函式型別、函式名、形參及形參型別、函式體等

2)在程式中,函式的定義只能有一次

3)函式首部與花括號間不加分號

2、函式的宣告

函式宣告只是對編譯系統的一個說明:

1)函式宣告是對定義的函式的返回值的型別說明,以通知系統在本函式中所呼叫的函式是什麼型別。

2)不包含函式體(或形參)。

3)呼叫幾次該函式就應在各個主調函式中做相應宣告,

4)函式宣告是一個說明語句,必須以分號結束,

2樓:須友終含蕊

要想在其他檔案而不是包含函式定義的檔案中使用該函式,我們必須要用到另外一種函式宣告機制函式宣告由函式返回型別、函式名和參數列構成。這三個元素被稱為

3樓:匿名使用者

先舉個例子:

int max(int,int); //①函式宣告int main()

int max(int x,int y) //②定義max這個函式

講通俗一點,函式宣告就是告訴編譯器這是一個函式,上面的程式中如果去掉①,那麼在main函式中呼叫max函式的時候編譯器將會報錯,因為此時還沒有定義max函式,編譯器不知道這個max是什麼,如果不想寫函式宣告,可以將函式定義放在它的使用之前,這樣編譯器就知道max是個函式了;函式定義就是具體定義函式的功能是什麼,這就不用多講了吧

4樓:匿名使用者

對函式而言,函式的宣告是函式的原型,函式的定義是對函式功能的定義。對被調函式的宣告是在主調函式的宣告部分中的,而函式的定義顯然是不在宣告部分的範圍內的,它是個獨立的模組。

對變數而言,在宣告部分出現的的變數的情況有兩種:一種是需要建立儲存空間的,(如"int a;"),另一種是不需要建立儲存空間的(如「extern a;」).前者為定義性宣告,或簡稱為定義;後者為引用性宣告。

廣義滴說,宣告包括定義,但並非所有的宣告都是定義。對於「int a;」而言,它既是宣告又是定義;而「extern a;」,它是宣告而不是定義。

一般為了敘述方便,把建立儲存空間的宣告稱定義,而把不需要建立儲存空間的宣告稱為宣告,

此處為狹義的宣告,但好理解

c++中,函式的宣告與函式的定義有什麼區別?

5樓:

宣告:一般在標頭檔案裡,對編譯器說:這裡我有一個函式叫function() 讓編譯器知道這個函式的存在。

定義:一般在原始檔裡,具體就是函式的實現過程 寫明函式體。

你還可以這樣理解:

首先下圖中的程式執行時,電腦是從上到下執行的。

也就是說假如沒有函式的宣告那一句,當函式執行到函式呼叫這一句時,電腦不知道fun是什麼東西,他不知道在下面有這個函式的具體實現。

因此,需要宣告下,告訴電腦,確實有這個東西存在,是函式,在下面有定義。

擴充套件資料:

整合開發環境(ide)

visual studio (visual c++)

c++ builder

kdevelop

anjuta

code::blocks:開放原始碼的全功能的跨平臺c/c++整合開發環境  。

visual mingw

ideone

eclipse cdt

compilr

code lite

netbeans c++

整合開發環境(ide),功能齊全,除錯功能很強,程式編好後,可以立刻在環境中除錯以獲得初步測試結果,然後,可以方便地做成beta版形式,拿到實際環境中進一步測試,最後做成軟體發行版。

編譯器dev c++

ultimate++

digital mars

c-free

mingw

tiny c compiler

6樓:匿名使用者

函式的宣告指 變數宣告瞭,並且在宣告之後。程式可以用此變數了。而函式的定義 則是給函式賦予一定的初值。

例如 int a; 是聲名,在宣告之後可用a這個變數。 int a=5;是定義

7樓:

有函式體的稱為定義,

即使函式體只是一個大括號,比如

int p(){}

8樓:匿名使用者

好吧,這樣和你說

void fun();//這個叫函式的宣告main()

void fun()//這個叫函式的定義

首先這個程式執行時,電腦是從上到下執行的

也就是說假如沒有函式的宣告那一句,當函式執行到函式呼叫這一句時,電腦不知道fun是什麼東西,他不知道在下面有這個函式的具體實現。因此,需要宣告下,告訴電腦,確實有這個東西存在,是函式,在下面有定義

9樓:石頭翔子

函式的宣告是相當於定義了一個函式的名字,即在程式中該名字就代表了一種操作,但宣告中並不會說明該函式是怎麼產生作用的;而函式的定義就是具體說明了函式的具體作用,即實現過程。

例如 void output(int x);//是一個函式的宣告,它一般位於主函式的前面;

void main()

void output(int x)//函式的定義,即指定了函式的具體操作。

j**ascript函式定義表示式和函式宣告的區別

10樓:育知同創教育

什麼是 function declaration(函式宣告)?

function declaration 可以定義命名的函式變數,而無需給變數賦值。function declaration 是一種獨立的結構,不能巢狀在非功能模組中。可以將它類比為 variable declaration(變數宣告)。

就像 variable declaration 必須以「var」開頭一樣,function declaration 必須以「function」開頭。

什麼是 function expression(函式表示式)?

function expression 將函式定義為表示式語句(通常是變數賦值)的一部分。通過 function expression 定義的函式可以是命名的,也可以是匿名的。function expression 不能以「function」開頭。

c語言中函式定義和宣告有什麼區別

11樓:匿名使用者

從c語言編譯器的角度來看,函式宣告只是一種協議,它告訴了呼叫者在呼叫這個函式之前需要給他什麼引數,一般引數是通過暫存器或者壓棧的方式傳給被呼叫函式的,具體這些引數如何使用以及返回什麼值到相應的暫存器裡返回給呼叫者則是定義所描述的。

12樓:藍宇嘉紫文

c語言中,無論是常量,變數,只有先定義才能使用。函式宣告,為了減少函式的混淆,所以要有個函式名,即宣告。函式定義是系統要求的,不定義就錯誤,而函式宣告實際上不定義也行,但為了方便和減少錯誤,人為規定要宣告。

13樓:

宣告 是告知下面的**:有這個函式可以用

定義 是對這個函式的具體實現

請問c語言中函式定義,函式宣告和函式呼叫的區別?

14樓:

函式宣告指函式原型宣告,只有函式名,函式型別,引數個數和型別,無函式體。一般放在主函式前。逗號結尾。

函式定義,除上述外,去掉結尾逗號,加函式體。可放在main函式後面,也可放在main函式前面。放在main函式前面則不要寫函式原型宣告。

15樓:雲澹楓卿

函式宣告格式如:

int max(int );

函式呼叫是你在某一個函式中去用它

16樓:炸屍男

函式宣告就是宣告有這麼一個函式:

比如 int number; 就是說 有一個整數叫number函式定義就是給一個函式賦值:

比如在宣告過函式number以後,再說 number = 5; 意思就是說把剛才說的那個叫number的整數的值定義為5

函式呼叫就是使用一個函式:

在宣告和定義完number以後 我們再說answer = number * 3; 意思就是answer等於number的3倍 在這個計算過程中我們使用了這個叫number的函式 所以就叫函式呼叫了

17樓:紅領巾飄過

函式宣告是告訴編譯器你有這麼一個函式。

函式定義是具體實現函式功能的**。

函式呼叫是富裕函式一定的引數,使用函式。

18樓:匿名使用者

樓主可以這樣想,c語言中,無論是常量,變數,函式,只有先定義才能使用的。在函式定義時,大腦要往一般的常量,變數定義的方向,切忌先不要想函式的別的。定義好後,把函式的定義先放一邊,不管它。

接著是函式宣告,大家都知道,c語言是有一個主函式main()和0或n個普通函式組成的。由於當**越長,用到的函式就越多,為了減少函式的混淆,所以要有個函式名,就像老師點名一樣,宣告一個函式,就如點一個學生的名字。

總之,函式定義是系統要求的,不定義就錯誤,而函式宣告實際上不定義也行,但為了方便和減少錯誤,人為規定要宣告。

19樓:匿名使用者

函式宣告是告訴編譯器你有這麼一個函式。

c語言裡的函式定義和函式說明有什麼聯絡和區別

20樓:超可愛

函式說明:「說明」的意思,即表明當前的程式檔案中有這個函式。

函式定義:「定義」的意思,即為該函式下定義——這個函式具體有什麼功能(函式體)。

2. 具體請先看**:

#include

int sum(int a, int b);        // 函式宣告

void main()

int sum(int a, int b)        // 函式定義

解釋一下:

由於c語言的編譯,是對c/cpp檔案的內容從上至下編譯。一般子函式(使用者定義的函式)放在主函式(main函式)後面的話,main函式前面就該有宣告,不然編譯系統將無法識別到子函式。

例如上面這個例子,如果將前面的函式宣告註釋掉,這個程式執行到main函式中的sum(num1, num2)時就會報錯,因為沒有在main函式前編譯到sum(a, b)這個函式,所以執行中就會識別不了sum這個函式。(如下圖所示)

3. 當然,通常情況下,我們也可以直接將整個子函式的函式體(函式定義)放在main前面,這樣就可以省略掉函式宣告的部分。

#include

int sum(int a, int b)        // 函式定義

void main()

以上這個程式同樣是可以正確編譯執行的。

使用者自定義函式的宣告放在主函式中還是標頭檔案那裡

都可以,但是標頭檔案裡面是類什麼的。如果只是完成某一個特定區域功能的函式,且只作用於一個檔案,那麼最好就放到包含main主函式的c 原始檔中 如何在c 標頭檔案中定義函式,然後在原始檔中使用 在text。h標頭檔案中進行宣告 include using namespace std void disp...

函式的定義,函式的概念,什麼是函式

付費內容限時免費檢視 回答函式的定義 在某一個變化過程中有兩個變數x和y,設變數x的取值範圍為數集d,如果對於d內的每一個x值,按照某個對應法則f,y都有唯一確定的值與它對應,那麼,把x叫做自變數,把y叫做x的函式。也就是說在互相關聯的兩個數中,如甲數變化,乙數亦隨甲數的變化而變化,則乙數稱為甲數的...

求函式的定義域和值域,求函式的定義域和值域

1.y 10 2x x 1 定義域由2x x 1 0確定,即x 1或x 0.y的值域是y 0,y 5.2.設t 1 2 x,則g x t 2 4t 5 t 2 2 9 t 0 x 1時t 2,t 2 2 9 g x x 1時t 2,t 2 2 9 g x g x 的定義域為r,值域為 9 1 x 1...