C語言函式只定義而不宣告問題

2021-05-27 13:25:03 字數 654 閱讀 8012

(2010-04-27 10:40:42)

小白實驗證明,tc3.0中,不寫函式宣告,只寫函式定義也是可以的。但是:

申明-- 不開闢記憶體,僅僅告訴編譯器,申明的部分存在,要預留一點空間。

定義-- 開闢記憶體。

申明 屬於 預編譯範疇的。最好寫在標頭檔案中(樓主,自定義標頭檔案學了沒有啊?)(申明都寫在標頭檔案中,只是一種好的程式設計習慣)

因為 在編譯的時候,編譯器先處理一些特殊資料(巨集定義,函式的申明,變數的申明),在這個過程中,編譯器 通過申明 可以**整個定義需要的記憶體大小,並且 把這些大小預留起來,留給定義的時候使用(因為雖然定義,但是在 main函式裡面沒有呼叫,一樣的不分配記憶體)。

如果不事先申明,直接定義,有可能會造成系統崩潰,出現記憶體不足,不能分配。 然而現在記憶體都是1g左右了,所以一般空間都足夠,所以你也可以不申明直接定義函式。

但是一旦記憶體緊張,就會出錯,而且程式簡潔性就很低。(不看到定義,還不知道原來還定義了這麼乙個函式!!!)

還有 變數也一樣,標準的都是 先申明在定義。

extern int i; //申明

int i=0; //定義並初始化為0

int i; //定義

.。。。。。。。。。。。。。。。。。

所以 從現在其要養成良好的程式設計習慣

先申明,在定義。

C 析構函式只宣告而不定義的問題

現附上乙個簡單的小例子 計算圓柱體體積 include using namespace std 計算圓柱體體積 class cylinder 圓柱體 cylinder cylinder 建構函式 double cylinder getindex intmain 在這個案例中,類cylinder中宣告...

c語言 函式宣告定義總結

巢狀呼叫很好理解,就是在乙個子程式裡呼叫另乙個子程式。void print char a void hello 而鏈式訪問就是把乙個函式的返回值直接當作實參傳遞給下乙個函式。int ret strlen strcat hello world 上例中strcat 的返回值是char型別,是目標串的首位...

C語言函式的定義和宣告。

函式的定義 函式的定義就是函式體的實現。函式體就是乙個 塊,它在函式被呼叫時執行,與函式定義相反的是,函式宣告出現在函式被呼叫的地方。函式宣告向編譯器提供該函式的相關資訊,用於確保函式被正確的呼叫。那麼函式到底是如何定義的呢?請看下面的語法 型別 函式名 形式引數 塊最簡單的 function na...