C++ 宣告,定義與初始化的基本概念
阿新 • • 發佈:2019-01-21
對於變數:
官方的解釋:
宣告一個變數只是將變數名識別符號的有關資訊告訴編譯器,使編譯器“認識”該識別符號,但宣告不一定引起記憶體的分配。而定義變數意味著給變數分配記憶體空間,用於存放對應型別的資料,變數名就是對相應的記憶體單元的命名。
在C++程式中,大多數情況下變數宣告也就是變數定義,宣告變數的同時也就完成了變數的定義,只有宣告外部變數時例外。
同一個檔案下:
對於變數而言,在同一個檔案裡面,很少使用宣告這個說法,一般沒有人去說我要宣告一個變數,然後定義這個變數。或者說,宣告與定義沒有明顯的區別。就好比 int a;
我們可以說這是一個宣告,也可以說這是一個定義,因為當程式執行到這句話的時候就完成了記憶體分配。資料型別,變數名,對應的記憶體單元就已經明確了。
而int a =1;
就完成了初始化,因為它明確了記憶體單元裡到底存放什麼樣的資料。
多個檔案下:
在同一個工程,在多個檔案中變數的宣告和定義才有區別(比如說在first.c檔案中先定義了一個int a;我在second.c中要訪問這個a,這時我們需要在second.c這個檔案中宣告一下);
對於函式:
而對於函式而言,宣告和定義就有明顯的區別了,首先定義一個函式要明確函式的型別,引數,名稱和功能,比如:
int fun(int a,int b)
{ int c;
c=a+b;
return c;
}
而這個函式如果在main函式的後面定義,但是在main函式裡面要呼叫它;或者在一個檔案中定義,在另一個函式中要引用它,此時就需要對其宣告:
int fun(int a,int b);