關於c 中函式原型宣告的小討論

2021-06-27 04:53:28 字數 948 閱讀 5918

或許我們都知道在寫程式時如果把被調函式寫到了main()函式的後面,那麼我們就必須在main()函式的前面對被調函式的原型進行宣告。但是你知道這其中的原理嗎?

先來看個程式:

#include

using namespace std;

int main()

{int a=1,b=2;

int s;

s=add(a,b);

cout<<"s="《這個程式執行時會出現錯誤:error "add()" was not declared in this scope   《錯誤的意思是說add是乙個未宣告的標示符》

要想理解這個錯誤形成的原因,就要先來了解一下這個程式的執行原理:

程式編譯時總是從上向下編譯,在上面的例子中,編譯器首先會編譯到被調函式add的語句,但是在add之前並沒有任何add的資訊,此時編譯器就會報錯。

現在,我們把上面的程式稍做一下修改:

#include

using namespace std;

int add(int x,int y);

int main()

{int a=1,b=2;

int s;

s=add(a,b);

cout<<"s="《這樣程式就沒有錯誤了。

那麼我們就來總結一下函式的宣告所起到的作用吧!

編譯器在遇到函式的宣告時,就會知道被調函式的基本資訊,包括函式的名稱,函式的引數型別,函式有幾個引數以及函式的返回值型別。這樣在編譯到函式的呼叫時就可以根據這些資訊對函式呼叫的合法性進行檢查。

函式宣告有兩種形式:

①.返回值型別     函式名(引數型別1,引數型別2,·······)《如:int add(int,int)>

②.返回值型別     函式名(引數型別1  引數名1,引數型別2   引數名2,······)           《如:int add(int  x,int y)>

C語言函式宣告以及函式原型

c語言 由上到下依次執行,原則上函式定義要出現在函式呼叫之前,否則就會報錯。但在實際開發中,經常會在函式定義之前使用它們,這個時候就需要提前宣告。函式宣告 declaration 就是告訴編譯器我要使用這個函式,你現在沒有找到它的定義不要緊,請不要報錯,稍後我會把定義補上。函式宣告的格式非常簡單,相...

關於C 中函式返回引用的討論

從函式返回引用 確保其引用的物件在函式執行完後仍然存在。引用型別返回值的主要特徵是可以作為左值,這意味著我們可以在賦值語句的左邊使用返回引用的函式的結果。永遠不要從函式中返回區域性變數的引用 c 中,返回引用是乙個比較晦澀的概念。在書中,對此僅僅做了乙個一般的介紹,並沒有展開。我覺得有必要對此進行一...

關於C 中函式返回引用的討論

從函式 返回引用 確保其引用的物件在函式執行完後仍然存在。引用型別返回值的主要特徵是可以作為左值,這意味著我們可以在賦值語句的左邊使用返回引用的函式的結果。永遠不要從函式中返回區域性變數的引用.1 首先,返回引用,要求在函式的引數中,包含有以 引用方式或 指標方式存在的,需要被返回的引數。比如 in...