c語言為什麼要宣告

2021-07-04 13:38:31 字數 460 閱讀 9075

隨便舉個例子

你在乙個編譯單元(相當於乙個.c檔案中),這樣寫

int main()

編譯器該怎麼編譯這個檔案呢?

是壓入乙個int型的1,還是壓入乙個long型的1,還是壓入乙個double型的1,……?

對於返回值,是當成float看待呢?還是當成int看待,然後轉化為float型別,……?

這些不能確定的話,就無法編譯。

假如你當成 float foo( int ); 看待,哪知道另乙個.c中是如下定義的,那就牛頭不對馬嘴

char foo( char c )

不同編譯單元因為資訊不共享,所以函式必須先宣告才可以使用。而對於同乙個編譯單元,如果允許不宣告,那編譯時就得掃瞄兩遍,第乙個用來確定函式原型,這樣的話,編譯時間就浪費很多,所以c/c++要求必須提前宣告(極度古老的c就不談的,因為那時只有乙個型別int,所以宣告不宣告都一樣,也就是預設型別都是int)。

C語言 C 為什麼要記憶體對齊

例一 struct aa 例二 struct aa 首先請告訴我,例 一 例二對應的空間大小分別是多少?答案是 12位元組 8位元組。這是為什麼呢?明明有相同的成員,可是為什麼記憶體大小就不一樣呢?這就是接下看來我們要討論的記憶體對其問題了。將每乙個資料的起始位置,在記憶體的對其位置處。無論如何,為...

c 為什麼要引用

includeusing namespace std void fun int p int main int a 10 int q q a cout 我對這段程式的理解在fun函式中b的位址賦給p了,為什麼呼叫之後,q的位址不變。5.當形參和實參不是指標型別時,在該函式執行時,形參和實參是不同的變數...

為什麼要學習R語言

r的誕生 1992年,肉絲 ross ihaka 和 蘿蔔特 robert gentleman 兩個人在s語言 貝爾實驗室開發的一種統計用程式語言 的基礎上開始構思一種新的用於統計學分析的開源語言,直到1995年第乙個版本正式發布 和各位年齡相仿 因為他們名字的第乙個字母都是r,所以這門語言就被叫做...