1、變量的聲明與定義
變量的定義:變量的定義用於爲變量分配存儲空間,還可以爲變量指定初始值。在一個程序中,變量有且僅有一個定義。
變量的聲明:用於向程序表明變量的類型和名字。程序中變量可以多次聲明。
定義包含了聲明,但是聲明不包含定義,如
int a = 0; //聲明、定義一個變量,並進行初始化
int b; //聲明、定義一個變量,沒有進行初始化
extern int c = 0; //聲明、定義一個變量,並進行初始化
extern int d; //只是聲明瞭有一個變量,邊梁在哪定義的,需要編譯器編譯的時候去找。
extern聲明不是定義,也不分配存儲空間。事實上它只是說明變量定義在程序的其他地方。
注意事項:
在頭文件中不能放變量的定義,一般存放變量的聲明。因爲頭文件要被其他文件包含,如果放到頭文件當中就不能避免變量被多次定義。
使用extern來調用其他文件的變量之前需要確保變量已經被定義。常見方法是,全局變量聲明、定義同步進行。
全局變量直接聲明定義等效於前面加上extern關鍵字。
#include "stdafx.h"
#include "windows.h"
#include "ble.h"
int gSum = 0; //等效於extern int gSum = 0;
int main()
{
printfSum();
while (true)
{
Sleep(10);
}
return 0;
}
2、函數的聲明與定義
函數定義:就是這個函數具體的實現
函數聲明:告訴編譯器在這個程序中會有這麼一個函數
定義的時候同時聲明。但如果只是聲明,編譯器只知道有這麼個函數,具體函數怎麼定義的要編譯器去找。
bool compare(int a,int b); //這是函數的聲明,一般在*.h文件
boo compare(int a,int b) //函數定義,一般在*.c文件;如果是在*.h文件中,這是函數的聲明、定義
{
return a>b;
}
簡單來說,函數聲明沒有一對花括號,且以分號“;”結尾;函數的定義沒有分號而且要加上一對花括號 ,裏邊是函數的實現。函數一定要在定義前聲明否則會報錯 。如果在主函數中自定義函數,主函數前寫上函數的聲明 ,然後在主函數之後寫函數的定義。