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