當(dāng)然可以,并且這樣做是非常常見的做法。
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、青田網(wǎng)絡(luò)推廣、小程序開發(fā)、青田網(wǎng)絡(luò)營銷、青田企業(yè)策劃、青田品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供青田建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
在稍大型一點的程序中,還可以把這些聲明放到單獨的.h頭文件中,然后在需要調(diào)用這些函數(shù)的.c源文件中#include "xxxx.h"
編譯時,編譯器會把你引用的頭文件內(nèi)容直接拷貝到該源文件中,就相當(dāng)于你在源文件開頭寫了一堆聲明。
樓主記住這么一個原則就行了。
函數(shù)要先聲明后使用。即函數(shù)調(diào)用之前一定要知道該函數(shù)的類型。
如果fun1在main函數(shù)之前已經(jīng)實現(xiàn),那么main函數(shù)調(diào)用fun1的時候就已經(jīng)知道fun1函數(shù)的類型了,就不需要聲明了。
如果fun1在main函數(shù)之后實現(xiàn),那么調(diào)用之前一定要先聲明。
在C語言中,編譯一個C語言源文件是從第一行開始掃描到最后的,你調(diào)用一個函數(shù),之前必須定義或申明過這個函數(shù)。
這樣是合法的:
void f(){
}
int main(){
f();
}
這樣也是合法的
void f();
int main(){
f();
}
void f(){
}
這樣就是非法的
int main(){
f();
}
void f(){
}
所以函數(shù)調(diào)用不一定需要先聲明,當(dāng)函數(shù)定義調(diào)用函數(shù)之后需才要先申明。
main函數(shù)放在最前面,結(jié)構(gòu)條例比較清晰,讀起來方便,先main,然后main調(diào)用的其他函數(shù)。這樣的話就需要在main前聲明被調(diào)函數(shù)。代價就是如果被調(diào)函數(shù)發(fā)生變化,譬如函數(shù)名稱、參數(shù)、返回值類型等發(fā)生變化,那么聲明的地方也要同步改變。
那是c語言本身的語法規(guī)定而已,所以編譯器的表現(xiàn)符合語言的行為要求,要先定義后使用,就是這么回事。并不是說一定絕對要提前聲明,然后使用,很多語言就不要先聲明,這也是語言本身的語法規(guī)定。當(dāng)然,如果不先聲明后使用的話,它可能就不是c語言,而是vb了。
如果硬要說什么理由的話,因為c語言是一種強類型語言,他有各種類型,包括不同的數(shù)據(jù)類型和函數(shù)類型(一種函數(shù)聲明就可以理解為一種函數(shù)類型),它們使用的內(nèi)存大小不一樣。這樣在編譯的時候為不同的類型分配適當(dāng)?shù)膬?nèi)存和相關(guān)限制,這樣有利于內(nèi)存的利用和程序的效率。
并未要求一次性將所有的變量聲明或者定義,只要求在使用某個變量之前先定義。變量的定義風(fēng)格利弊如下:
1、變量在函數(shù)開頭定義:便于修改。
2、變量就近定義:便于閱讀。
3、變量在塊語句的開頭定義:有的臨時變量放在語句塊開頭,可以不用在函數(shù)開頭定義,并且在使用完畢后釋放空間,可以這么做,但不要無故添加花括號來提高代碼的結(jié)構(gòu)。
一般的,為了要達到最大的兼容跨平臺性,還是放在函數(shù)開頭定義。因為C89規(guī)定,在任何執(zhí)行語句之前,在塊的開頭聲明所有局部變量。
如以下代碼:
會報錯信息:error C2065: 'salary' : undeclared identifier。
在C99以及C++中則沒有這個限制,即在首次使用之前,可在塊的任何位置都可以聲明變量。
擴展資料:
c語言變量定義和保存格式的關(guān)系:
1、源文件保存為.c格式的話變量只能定義在最前,若保存為.cpp格式的話,變量定義較為靈活,不用在最前。
2、在C語言里,變量只能在函數(shù)的開頭處聲明和定義。在函數(shù)里要用到的變量必須要在開頭處聲明定義。聲明定義的前面不能有任何其他非聲明定義的語句。全局變量在函數(shù)體的外部聲明定義。
而C++里(.CPP文件是按C++標(biāo)準(zhǔn)編譯的),只要在用到變量前對該變量進行聲明定義就行了,位置不做特別要求。而C語言的就定了在一個模塊里(函數(shù)、循環(huán)體等)先聲明一切所需變量后才能進行相關(guān)操作的規(guī)定。
參考資料:
百度百科--C語言