1. 程式人生 > >聲明與定義的區別

聲明與定義的區別

區別 生成 之前 tro 建立 一定的 相同 標識符 一個

聲明與定義的區別

聲明是向編譯器介紹名字--標識符。它告訴編譯器“這個函數或變量在某處可找到,它的模樣象什麽”。而定義是說:“在這裏建立變量”或“在這裏建立函數”。它為名字分配存儲空間。無論定義的是函數還是變量,編譯器都要為它們在定義點分配存儲空間。對於變量,編譯器確定變量的大小,然後在內存中開辟空間來保存其數據,對於函數,編譯器會生成代碼,這些代碼最終也要占用一定的內存。
在C和C++中,可以在不同的地方聲明相同的變量和函數,但只能有一個定義(有時這稱為ODR,單一定義規則)。。。
定義也可以是聲明,如果有int x;,之前編譯器未發現標識符x,編譯器則把這一標識符看成是定義並立即為它分配存儲空間。變量在一般情況下聲明的同時也就是定義,其實你也可以完全把他們當一個東西。

聲明與定義的區別