原文:http://www.cppblog.com/sscchh-2000/archive/2006/04/12/5397.html
變量的聲明和定義的區(qū)別是:
聲明是向程序介紹一個(gè)名字,它指的是該名字是什么意思,在內(nèi)存上并沒有分配存儲(chǔ)空間;
而定義是指為這個(gè)名字分配存儲(chǔ)空間。如在源文件example.c中的幾個(gè)例子:
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; 指的是聲明這個(gè)變量,在某個(gè)函數(shù)用到這個(gè)變量的時(shí)候,它會(huì)查找在該程序段中有沒有
定義這個(gè)變量,如果沒有,查找本模塊的其他地方,之后查找整個(gè)全局空間。直到找到改變量的
定義,如果沒有,程序出現(xiàn)編譯錯(cuò)誤。同樣,如果在某個(gè)頭文件定義了一個(gè)變量,例如:在example.h
頭文件中定義了int x;如果有兩個(gè)實(shí)現(xiàn)文件example1.c和example2.c都包含了該頭文件,此時(shí)就會(huì)出現(xiàn)變量
重復(fù)定義錯(cuò)誤。