void do_func(); //聲明就是告訴編譯器我有這么一個函數(shù) do_func(); //調用就不會出錯了 } 當然。這個函數(shù)具體是什么功能,我們要來定義一下。
創(chuàng)新互聯(lián)建站公司2013年成立,公司自成立以來始終致力于為企業(yè)提供官網建設、移動互聯(lián)網業(yè)務開發(fā)(小程序開發(fā)、手機網站建設、app開發(fā)定制等),并且包含互聯(lián)網基礎服務(域名、主機服務、企業(yè)郵箱、網絡營銷等)應用服務;以先進完善的建站體系及不斷開拓創(chuàng)新的精神理念,幫助企業(yè)客戶實現(xiàn)互聯(lián)網業(yè)務,嚴格把控項目進度與質量監(jiān)控加上過硬的技術實力獲得客戶的一致贊譽。
在上面的代碼中,第二行是對函數(shù)AddOne的聲明,后面必須有分號;而從倒數(shù)第四行開始是函數(shù)AddOne的定義,后面有大括號括起來。
void foo() //函數(shù)定義 defination { printf(hello world!);} 這是一種情況,這時定義與聲明是分開的,如果把定義直接移到引用的前面,則定義與聲明是一起的。
聲明和定義是針對函數(shù)的概念:包含函數(shù)實現(xiàn)的叫做函數(shù)的定義,一般位于.c文件中,如:int func(int a){return a+1;} 不包含函數(shù)實現(xiàn),只包含函數(shù)名的叫做函數(shù)的聲明,一般位于.h文件中。
int a; 是聲明,a的定義是在別處,這里并沒有為a分配空間。
C語言里可能經常會說:聲明變量時不會分配內存,定義變量時才會分配內存。局部變量的聲明即是定義:void fun(){ int a = 1; //既是聲明,也是定義,初始值為1 int b; //既是聲明,也是定義,初始值偽隨機。
聲明與定義的區(qū)別:函數(shù)的聲明與函數(shù)的定義形式上十分相似,但是二者有著本質上的不同。聲明是不開辟內存的,僅僅告訴編譯器,要聲明的部分存在,要預留一點空間。定義則需要開辟內存。
接著是函數(shù)聲明,大家都知道,C語言是有一個主函數(shù)main()和0或n個普通函數(shù)組成的。由于當代碼越長,用到的函數(shù)就越多,為了減少函數(shù)的混淆,所以要有個函數(shù)名,就像老師點名一樣,聲明一個函數(shù),就如點一個學生的名字。
不同文件中:fun.h:void fun(); //函數(shù)聲明 fun.c:extern int a; //聲明,不再分配內存,extern關鍵字表示此變量已在其它地方定義。
聲明與定義的區(qū)別:函數(shù)的聲明與函數(shù)的定義形式上十分相似,但是二者有著本質上的不同。聲明是不開辟內存的,僅僅告訴編譯器,要聲明的部分存在,要預留一點空間。定義則需要開辟內存。
樓主可以這樣想,C語言中,無論是常量,變量,函數(shù),只有先定義才能使用的。在函數(shù)定義時,大腦要往一般的常量,變量定義的方向,切忌先不要想函數(shù)的別的。定義好后,把函數(shù)的定義先放一邊,不管它。
由于C語言的編譯,是對c/cpp文件的內容從上至下編譯。一般子函數(shù)(用戶定義的函數(shù))放在主函數(shù)(main函數(shù))后面的話,main函數(shù)前面就該有聲明,不然編譯系統(tǒng)將無法識別到子函數(shù)。
不同文件中:fun.h:void fun(); //函數(shù)聲明 fun.c:extern int a; //聲明,不再分配內存,extern關鍵字表示此變量已在其它地方定義。
聲明和定義是針對函數(shù)的概念:包含函數(shù)實現(xiàn)的叫做函數(shù)的定義,一般位于.c文件中,如:int func(int a){return a+1;} 不包含函數(shù)實現(xiàn),只包含函數(shù)名的叫做函數(shù)的聲明,一般位于.h文件中。