函數定義和函數聲明編譯器
Ⅰ c語言中函數定義和聲明有什麼區別
從C語言編譯器的角度來看,函數聲明只是一種協議,它告訴了調用者在調用這個函數之前需要給他什麼參數,一般參數是通過寄存器或者壓棧的方式傳給被調用函數的,具體這些參數如何使用以及返回什麼值到相應的寄存器里返回給調用者則是定義所描述的。
Ⅱ 定義函數,調用函數,聲明函數什麼意思什麼區別
聲明函數,就是聲明某變數是函數,並聲明它有幾個參數,有無返回值,參數是什麼類型,返回值是什麼類型。
定義函數,需給出所有形式參數,就是用形式參數 詳細地 描述 函數執行具體運算和操作。
調用函數,是用實際參數代替形式參數,放入函數,按 函數定義 描述 的 過程 執行一遍 運算和操作,並返回結果。
例如:
聲明函數 int add(int , int ); -- 聲明add是函數,有2個整型參數,返回整型值
定義函數 int add(int a, int b ) { return a+b;} -- 定義形參a,b 返回 a+b
調用函數 z = add(x,y); // x,y 的值已知,用xy代替形參,調用add, 返回整型值 並賦給 z。
函數定義若在main() 以前,可略去 函數聲明。
函數定義若在main() 以後,main()以前要有 函數聲明,又叫函數原型聲明,分號結束,可以帶形參,寫出形參名,也可以只寫類型,不寫形參名字。
例如 函數原型聲明:
int add(int a, int b ); 或
int add(int , int ); 或
int add(int e, int f );
都是正確的。
Ⅲ java中函數的聲明和定義
Java中,我們應該知道最基本的就是定義變數和聲明變數了,那麼定義與聲明這兩者有沒有區別呢?具體的區別又是哪些呢?下面學習啦小編來告訴你定義與聲明的區別。
定義和聲明的定義區別
1、一種是需要建立存儲空間的。例如:int a 在聲明的時候就已經建立了存儲空間。
2、另一種是不需要建立存儲空間的。 例如:extern int a 其中變數a是在別的文件中定義的。
聲明是向編譯器介紹名字--標識符。它告訴編譯器「這個函數或變數在某處可找到,它的模樣象什麼」。
而定義是說:「在這里建立變數」或「在這里建立函數」。它為名字分配存儲空間。無論定義的是函數還是變數,編譯器都要為它們在定義點分配存儲空間。
對於變數,編譯器確定變數的大小,然後在內存中開辟空間來保存其數據,對於函數,編譯器會生成代碼,這些代碼最終也要佔用一定的內存。
總之就是:把建立空間的聲明成為「定義」,把不需要建立存儲空間的成為「聲明」。
基本類型變數的聲明和定義(初始化)是同時產生的;而對於對象來說,聲明和定義是分開的。
下面小編給大家舉個例子說明一下。
例如:類A
如果A a;就是一個聲明,告訴編譯器a是A類的一個對象變數,但是不進行初始化;
如果以後a=new A();這就是初始化,分配了空間。
需要注意的是我們聲明的最終目的是為了提前使用,即在定義之前使用,如果不需要提前使用就沒有單獨聲明的必要,變數是如此,函數也是如此,所以聲明不會分配存儲空間,只有定義時才會分配存儲空間。
用static來聲明一個變數的作用有二:
(1)對於局部變數用static聲明,則是為該變數分配的空間在整個程序的執行期內都始終存在。
(2)外部變數用static來聲明,則該變數的作用只限於本文件模塊。
定義和聲明的具體區別
所謂定義就是(編譯器)創建一個對象,為這個對象分配一塊內存,並給它取上一個名字,這個名字就是就是我們經常所說的變數名或對象名。
聲明有2重含義:
(1) 告訴編譯器,這個名字已經匹配到一塊內存上,下面的代碼用到變數或者對象是在別的地方定義的。聲明可以出現多次。
(2) 告訴編譯器,這個名字已經被預定了,別的地方再也不能用它來作為變數名或對象名。
定義和聲明最重要區別
定義創建對象並為這個對象分配了內存,聲明沒有分配內存。
Ⅳ 函數聲明與函數定義的區別
聲明與定義的區別:
函數的聲明與函數的定義形式上十分相似,但是二者有著本質上的不同。聲明是不開辟內存的,僅僅告訴編譯器,要聲明的部分存在,要預留一點空間。定義則需要開辟內存。
函數的定義
函數的定義是一個完整的函數單元,包含函數類型、函數名、形參及形參類型、函數體等。在程序中,函數的定義只能有一次。函數首部與花括弧間不加分號。
函數的聲明
函數聲明只是對編譯系統的一個說明:函數聲明是對定義的函數的返回值的類型說明,以通知系統在本函數中所調用的函數是什麼類型。不包含函數體(或形參),調用幾次該函數就應在各個主調函數中做相應聲明。函數聲明是一個說明語句,必須以分號結束。
拓展資料:
C語言編譯系統是由上往下編譯的.一般被調函數放在主調函數後面的話,前面就該有聲明.不然C由上往下的編譯系統將無法識別。正如變數必須先聲明後使用一樣,函數也必須在被調用之前先聲明,否則無法調用!函數的聲明可以與定義分離,要注意的是一個函數只能被定義一次,但可以聲明多次。
函數聲明由函數返回類型、函數名和形參列表組成。形參列表必須包括形參類型,但是不必對形參命名。這三個元素被稱為函數原型,函數原型描述了函數的介面。定義函數的程序員提供函數原型,使用函數的程序員就只需要對函數原型編輯即可。
Ⅳ 函數聲明的聲明與定義的區別:
函數的聲明與函數的定義形式上十分相似,但是二者有著本質上的不同。聲明是不開辟內存的,僅僅告訴編譯器,要聲明的部分存在,要預留一點空間。定義則需要開辟內存。 函數聲明只是對編譯系統的一個說明: 函數聲明是對定義的函數的返回值的類型說明,以通知系統在本函數中所調用的函數是什麼類型。 不包含函數體(或形參) 調用幾次該函數就應在各個主調函數中做相應聲明 函數聲明是一個說明語句,必須以分號結束!
Ⅵ C++中,函數的聲明與函數的定義有什麼區別
函數的聲明與函數的定義的區別:
聲明:一般在頭文件里,對編譯器說:這里我有一個函數叫function() 讓編譯器知道這個函數的存在。
定義:一般在源文件里,具體就是函數的實現過程 寫明函數體。
你還可以這樣理解:
首先下圖中的程序執行時,電腦是從上到下執行的。
也就是說假如沒有函數的聲明那一句,當函數執行到函數調用這一句時,電腦不知道fun是什麼東西,他不知道在下面有這個函數的具體實現。
因此,需要聲明下,告訴電腦,確實有這個東西存在,是函數,在下面有定義。
(6)函數定義和函數聲明編譯器擴展閱讀:
集成開發環境(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
Ⅶ 函數定義和函數聲明有什麼區別,程序調試和程序測試有什麼區別,說的通俗點,感激不盡
函數聲明就是只寫出函數和函數參數,不寫函數體(就是大括弧里的內容,包括大括弧),函數定義寫函數和函數參數和函數體,函數聲明就相當於告訴有一個人叫xxx,函數定義相當於告訴你有一個叫xxx的人,同時還告訴你他會做什麼,他有什麼屬性。
程序調試是指你寫完你的程序時,編譯器告訴你有錯誤,有警告,然後你去修改你的程序,使之能運行。
程序測試是程序雖然運行起來是,但是結果會導致程序崩潰,或者結果是錯的,然後去修正你的代碼使錯誤修正。