當前位置:首頁 » 編程語言 » c語言函數聲明與定義

c語言函數聲明與定義

發布時間: 2022-05-03 14:36:28

1. c語言中函數聲明和函數定義有什麼區別

函數聲明是通知程序,該函數是存在的
函數定義是通知程序,該函數是什麼(函數的實現)
一般如果函數定義放在文件的最前面,那麼可以不使用函數聲明,但不規范
所以,最好是使用函數聲明(也是放在文件的最前面,最好是在頭文件中聲明)

請採納,謝謝

2. 函數聲明與函數定義的區別

聲明與定義的區別:

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

函數的定義

函數的定義是一個完整的函數單元,包含函數類型、函數名、形參及形參類型、函數體等。在程序中,函數的定義只能有一次。函數首部與花括弧間不加分號。

函數的聲明

函數聲明只是對編譯系統的一個說明:函數聲明是對定義的函數的返回值的類型說明,以通知系統在本函數中所調用的函數是什麼類型。不包含函數體(或形參),調用幾次該函數就應在各個主調函數中做相應聲明。函數聲明是一個說明語句,必須以分號結束。

拓展資料:

C語言編譯系統是由上往下編譯的.一般被調函數放在主調函數後面的話,前面就該有聲明.不然C由上往下的編譯系統將無法識別。正如變數必須先聲明後使用一樣,函數也必須在被調用之前先聲明,否則無法調用!函數的聲明可以與定義分離,要注意的是一個函數只能被定義一次,但可以聲明多次。

函數聲明由函數返回類型、函數名和形參列表組成。形參列表必須包括形參類型,但是不必對形參命名。這三個元素被稱為函數原型,函數原型描述了函數的介面。定義函數的程序員提供函數原型,使用函數的程序員就只需要對函數原型編輯即可。

3. c語言中一個函數的聲明和定義有區別嗎

有區別的,函數聲明以分號結尾,函數定義後跟函數體
具體形式上可以相同,但聲明也可以用省略模式,比如:
int f(int a,int b) { return a+b; }
其聲明可以是:int f(int a,int b);
也可以是:int f(int,int);

4. c語言中,聲明和定義有什麼區別

如果是指變數的聲明和定義:

從編譯原理上來說,聲明是僅僅告訴編譯器,有個某類型的變數會被使用,但是編譯器並不會為它分配任何內存。而定義就是分配了內存。
對於下面的兩句代碼:
void Func()
{
int a;
int b=1;
a=0;
}
對於第一行代碼,編譯器不會做任何事,它不會為它在棧中分配一點東西,直到第三句,a=0;時,編譯器才會將其壓入棧中。而對於int b=0;這一句,編譯器就會生成一條指令,為它賦值。如果反匯編,看到的代碼可能是這樣的:
push 1;
push 0;
當然,並不一定編譯器就會樣做,也有可能在聲明int a時,編譯器就會把一個廢值入棧,到第三條再為其賦值,這要看編譯器的具體取捨,所以,聲明不一定不是定義,而定義一定是定義。
但是,下面的聲明,一定僅僅是聲明:
extern int a;
這表時,有一個int變數a,它一定是在另外其他地方定義的,所以編譯器此時一定不會做什麼分配內存的事,因為它就是聲明,僅僅表明下面的代碼引用了一個符號,而這個符號是int類型的a而已。

如果是指函數的聲明和定義:

聲明:一般在頭文件里,對編譯器說:這里我有一個函數叫function() 讓編譯器知道這個函數的存在。

定義:一般在源文件里,具體就是函數的實現過程 寫明函數體。

5. c語言中函數定義和聲明有什麼區別

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

6. C語言中,聲明和定義的區別是什麼

聲明只是一個空殼,不會有具體的函數實現,
而定義要實現函數的實現,例如:
函數聲明
int atoi(char para);
函數實現:
int atoi(char para)
{
int result;
result=para-38;
return result;

}//這里函數實現就要有實際的函數定義了

7. C語言 函數定義 函數聲明 區別

樓主可以這樣想,C語言中,無論是常量,變數,函數,只有先定義才能使用的。在函數定義時,大腦要往一般的常量,變數定義的方向,切忌先不要想函數的別的。定義好後,把函數的定義先放一邊,不管它。
接著是函數聲明,大家都知道,C語言是有一個主函數main()和0或n個普通函數組成的。由於當代碼越長,用到的函數就越多,為了減少函數的混淆,所以要有個函數名,就像老師點名一樣,聲明一個函數,就如點一個學生的名字。
總之,函數定義是系統要求的,不定義就錯誤,而函數聲明實際上不定義也行,但為了方便和減少錯誤,人為規定要聲明。

8. 在C語言中,什麼是聲明、定義、初始化有什麼區別

1.聲明和定義是針對函數的概念:
包含函數實現的叫做函數的定義,一般位於.c文件中,如:
int func(int a){return a+1;}
不包含函數實現,只包含函數名的叫做函數的聲明,一般位於.h文件中。如:
int func(int a);
2.定義和初始化是針對變數的概念:
int a;就是變數的定義
a=0;就是變數的初始化

9. C語言中函數什麼時候聲明,什麼時候定義最好舉例說明。

函數可以在調用函數的函數(比如main函數)之前定義,這樣就無需聲明了;

舉例:

intadd(intx,inty){returnx+y;}//在編譯程序編譯到main的調用add之處時,由於已經編譯過add的函數了,因此編譯程序已經知曉調用規則,因此可以省略聲明語句
voidmain(){intx=5,y=6,c;c=add(x,y);printf("%d ",c);}

如果函數在調用函數的函數之後定義,為了通知編譯程序要調用函數的格式,需要在調用函數的函數前添加函數的聲明。

舉例:

intadd(intx,inty);//函數聲明也可以簡單地寫成intadd(int,int);通知編譯程序main中調用add的規則即可
voidmain(){intx=5,y=6,c;c=add(x,y);printf("%d ",c);}
intadd(intx,inty){returnx+y;}

10. 在C語言中函數定義跟函數聲明有什麼區別

int
fun(int
a,
int
b);
函數定義:
int
fun(int
a,int
b)
{
int
c;
c=a+b;
return
c;

}
聲明就象是定義的頭部,比較簡略,函數是用來調用的,如果函數定義部寫到調用的位置後面,執行到調用位置,

熱點內容
我的世界伺服器崩了重啟 發布:2025-05-14 16:09:37 瀏覽:44
android深拷貝 發布:2025-05-14 16:09:35 瀏覽:153
cf電腦版轉伺服器神器還在嗎 發布:2025-05-14 16:09:02 瀏覽:211
百度文庫伺服器如何搭建 發布:2025-05-14 16:09:00 瀏覽:248
安卓微信刪除的好友怎麼找回 發布:2025-05-14 16:08:56 瀏覽:706
iphone的訪問限制密碼忘記了怎麼辦 發布:2025-05-14 16:08:56 瀏覽:184
php對象轉換成數組 發布:2025-05-14 16:07:55 瀏覽:27
java服務端緩存 發布:2025-05-14 15:53:37 瀏覽:105
php判斷postget 發布:2025-05-14 15:34:24 瀏覽:357
linux查看電腦配置 發布:2025-05-14 15:32:07 瀏覽:317