-
你還沒有弄清楚宣告是關於什麼的,函式的宣告,程式不會在宣告它的地方執行函式,它只是告訴編譯器有這樣乙個函式將被使用,否則編譯器不知道這個函式,只是呼叫它就會編譯乙個錯誤。
-
小聲說,其實譚浩強從來沒用過C編譯器,大概是用過C++編譯器學過的C語言,所以從來不懂兩者的區別,教過很多想不通的人。
C++ 的原則是在使用前宣告,這從來都不是例外。 但是 C 規則更寬容,如果它看到呼叫而沒有看到宣告,它會將函式的每個引數視為您給它的型別,並返回乙個 int(在您的情況下,C 編譯器很智慧型,但在某些情況下它不起作用)。 這就解釋了為什麼你可以在不宣告的情況下使用它。
再舉乙個例子,你可以使用 printf 或其他東西而不寫 include,而且你通常不會出錯。 如果你使用 C++ 編譯器來編譯它,那絕對不是。
最後,新增一句話:也就是說,有必要在使用前不斷宣告,以減少一些潛在的誤解。
to yangzhe2291:
也就是說,如果函式是在呼叫之後定義的,並且被呼叫的函式是 int 型別,那麼你就不必在這裡宣告“被呼叫函式的型別”是如何定義的? 你說的是返回值型別嗎?
有的C編譯器提前把這些常用函式當成常用函式,“學過C的人有這麼奇怪的想法”。 你可以通過呼叫你自己在 main 函式中編寫的函式(之前沒有編寫宣告或標頭檔案)並在另乙個檔案中實現它來嘗試此操作,將兩者結合起來。 o 鏈結在一起並嘗試一下?
如果是 VS,則放兩個。 c 只需新增相同的專案即可。
-
我是這麼說的嗎?
main(){
aaaa();
但是有了這樣的宣告,他不是剛剛擊中了***嗎?
A:宣告函式的目的是告訴編譯器函式的原型(引數型別、返回值型別),一般可以把宣告函式的語句放在函式體之外。
void aaaa(void);原型:無返回值 無引數。
void main()
-
A不一定是真的,但bc一定是錯的,A的問題,如果在乙個C檔案中,子函式出現在main函式之前,那麼就沒有必要宣告了,這是因為這一段子函式在編譯main之前就已經被編譯器識別了。 但是,如果主檔案或其他子檔案相互巢狀並寫入 main,則必須宣告它們,而只需在 main 之前編寫的子函式,或寫入另乙個 C 檔案中而沒有任何巢狀的子函式則不需要宣告。 (我說的是編譯我上面看到的內容,而不是程式設計師的性格問題)。
B 宣告是,其中一些必須宣告,但宣告不一定能加快編譯速度,通常是在彙編之後。 C 檔案將合併為乙個。 當然,C檔案也是編譯器用來向人們展示他的過程的,他們會用到所有的巨集定義,所有的子函式呼叫,所有的標準庫和C庫呼叫的子函式,一起放進檔案中,那麼檔案的容量就會急劇增加,通過編譯器進一步把這個大檔案反映成乙個可執行程式。
因為這一步在編譯時是不可避免的,所以無論是否宣告,這一步都不能簡化,所以是正確的。 至少,這是巨集觀的。
撇開 C 不談,這與返回值型別無關。
-
d、函式宣告是函式呼叫的重要環節,函式宣告有兩種情況:一種是在引數定義之前提前呼叫函式,即main()函式在後定義,函式在函式外定義。 第二種是將 main() 函式放在呼叫函式之後,這樣就不需要定義了。
-
a所有函式都需要宣告,告訴編譯系統你正在呼叫的函式,例如,C 程式在 int main() 的開頭有一句話來宣告 main 函式。
-
答案是A,在C中,所有函式都是按照先宣告後使用原則呼叫的。
-
您也可以在不宣告的情況下定義它。 但:
1. 函式的範圍僅從定義它的地方開始。 換句話說,您不能在函式定義行的頂部使用函式。 如果將函式的定義放在主函式之前,程式將變得不清晰。
所以在使用之前只需用一行宣告它,就很清楚了。
2.也許函式不是全部用在乙個檔案中,這個時候,如果重新定義,不僅會顯得冗長,還會讓程式的維護變得麻煩,如果修改這個函式,就需要修改每個定義。
因此,您可以將函式宣告放在標頭檔案中,並且在使用它時,可以包含此標頭檔案。
3.有時,您編寫的函式需要被其他人使用,例如用於商業用途。 在這種情況下,你不能把函式的整個實現都交給對方,所以需要生成乙個庫檔案,把函式宣告放在標頭檔案中供對方使用。
4. 有時你需要用函式宣告重新宣告乙個函式,即使它之前已經宣告過。 這樣做可以設定新的預設引數或遮蔽範圍之外具有相同名稱的函式宣告。
-
似乎子例程的輸入引數不能有陣列(不知道為什麼),所以建議用指標替換陣列。
-
答:C語言中宣告和定義的區別在於:
宣告:宣告的只是某一型別的變數引數的名稱,引數沒有相應的賦值。
定義:乙個引數,它不僅宣告了某種型別的引數的名稱,而且還初始化了該引數的賦值。
至於宣告和定義的位置,它們不必在函式的前面。 您需要做的就是在需要使用引數之前宣告或定義引數。 可以是前面的函式,宣告; 它也可以在函式中宣告。
兩者的區別在於動作間隔不同:前者可用於其他功能; 後者只能在此功能中使用。
例如,有兩個區別:
陳述。 int a;
定義。 int a = 1;
-
程式是按順序執行的,你只需要記住,為了使用它們,你必須宣告它們。
宣告位置在哪裡並不重要,只要宣告在使用前面即可。 所以它通常不在函式之外。
有人認為我只在乙個函式中呼叫宣告函式,所以我只在這個函式中宣告呼叫函式,這樣在函式中宣告,也沒問題。
因此,沒有關於功能內和功能外宣告的規則,只是宣告應該在使用前面。
乙個好習慣是置身事外 ·通常,函式原型宣告在標頭檔案的較低位置)。
宣告通常告訴編譯器它有這個物件。 但是這個'是的'這個詞有兩個含義,第乙個含義是物件已經在別處定義過了,比如,當它用extern宣告時,它就有了這個含義,因為物件已經存在了,此時不會給它分配記憶體。 第二個含義是這個物件以前沒有被我定義過(現在我有了它,以前沒有了),這個時候宣告可以稱為它們重疊的定義,此時記憶體被分配給這個物件。 >>>More
你能說清楚嗎,我不知道你的意思。 是否要在 main 函式中呼叫乙個函式,然後不知道如何定義被呼叫的函式? 如果是這樣的話,我可以告訴你。 >>>More
按照我的慣例,賣家應該負責到貨國的清關,但關稅是由賣家支付的,海關只有在買家繳納關稅後才能放行,所以是免稅發貨。 交貨行動發生在關稅支付階段,而不是到達階段。 否則,它與CIF沒有什麼不同。
ACMA 代表 英國特許管理會計師協會 (Associate of the Chartered Institute of Management Accountants) 和英國特許管理會計師協會 (Chartered Institute of Management Accountants)。 >>>More