Posted on 2010-08-11 11:04
幻海藍夢 閱讀(144)
評論(0) 編輯 收藏 所屬分類:
C++
原文:http://www.cppblog.com/sscchh-2000/archive/2006/04/12/5397.html
變量的聲明和定義的區別是:
聲明是向程序介紹一個名字,它指的是該名字是什么意思,在內存上并沒有分配存儲空間;
而定義是指為這個名字分配存儲空間。如在源文件example.c中的幾個例子:
extern int i;//declaration without definition
extern int fun(void);//function declaration
float b;//declaration and definition
int fun(void)//definition
{
return 1;
}
int i;//definition
int add(int x)//declaration and definition
{
return x + 1;
}
void main()
{
b = 1.0f;
i = 2;
fun();
add(5);
}
extern int i; 指的是聲明這個變量,在某個函數用到這個變量的時候,它會查找在該程序段中有沒有
定義這個變量,如果沒有,查找本模塊的其他地方,之后查找整個全局空間。直到找到改變量的
定義,如果沒有,程序出現編譯錯誤。同樣,如果在某個頭文件定義了一個變量,例如:在example.h
頭文件中定義了int x;如果有兩個實現文件example1.c和example2.c都包含了該頭文件,此時就會出現變量
重復定義錯誤。