函數聲明和定義

1. 函數由類型 (返回值 (參數列表))聲明,該類型原理和類類型是一樣的。int func(int i); 其中函數名爲func,等同於常量變量名。func有地址分配。函數定義時有{}註明,函數中代碼存入func地址。(這裏()不是函數調用操作符,僅是一個函數聲明表示,類似於class)。

當函數調用時按函數名+函數調用操作符() + 參數調用。這裏面函數操作符(和上面函數標識不一個概念)就是一個內置函數(所有的操作符都是一個內置函數),函數調用操作調用函數代碼,並傳入參數執行。

2. 變量和函數在使用之前一定先有定義。如:

void func();
typedef void (*Func)();

Func func1 = func;
void func(){}

如果沒有最後一行就會出現錯誤,注意:對於變量和函數可以先聲明,定義在使用的後面,編譯器會自動在其作用域中尋找定義。如在extern關鍵字的作用域,static關鍵字的作用域。但是對於類型來說,定義一定在使用之前。如:

class A;

A a;

class A

{};

這樣會出現錯誤(類型不能用extern,static atuo等修飾,編譯是從前到後,不會自動按作用域尋找定義)。但是:

class A;

A *a;

class A

{};

這樣是可以的,因爲A *a;並沒有用到A的定義,a是一個指針四字節。

 

發佈了30 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章