在C語言中,對於定義和聲明,也許我們非常的熟悉,但不一定真正的了解!
定義的含義:所謂定義,就是創建(編譯器)一個對象,為這個對象分配一塊內存空間並取名,也就是我們平常所說的變量名或對象名,一旦這個名字和這塊內存空間匹配,那麼在定義的這個對象或變量的生命周期中,所創建的這個變量名將不能再被改變,並且內存空間的位置也不會改變。在一個區域內(函數內,全局),一個名字只能被定義一次,不能重復定義。
聲明的含義:聲明有兩重含義
第一重含義:告訴編譯器,這個名字已經匹配到了一塊內存空間上,後面的代碼所用到的這個變量或對象都是在別的地方定義過的。
eg:extern int i:
第二重含義:告訴編譯器,這個名字我已經預定了,例如最熟悉的函數聲明:void fun(int i,char c);在最開始聲明,就是表示告訴編譯器,這個名字已經被預定,後面的代碼中其他變量或對象將不能再使用這個名字,聲明可以多次重復。
定義和聲明的主要區別:
定義創建了對象並分配內存空間,而聲明不分配內存空間。
-------總結自《C語言深度解析》