指針 的總結(jié)*意為取值 &意為取地址 &相當(dāng)于給變量加了層鎖,*就相當(dāng)于給變量解一層鎖. 至于"鎖"是什么呢 比如&b ---> 有一層鎖 ---> 指的是b的地址, &&b ----> 加了兩層鎖----->指儲存b的地址的地址 *b -----> 解一層鎖 -----> 取b的內(nèi)容為地址的值. int *p;//定義了一個(gè)指針 p=&b;//<加了一層鎖的b >這個(gè)值賦給p c=*p; //<解了一層鎖的p,其中p是加了一層鎖的b,于是就是b了反正>這個(gè)值給c a!=b 邏輯判斷,a不等于b,當(dāng)ab不等時(shí)為真。 && 邏輯與,均為真時(shí)結(jié)果為真。 || 邏輯或,均為假時(shí)結(jié)果為假,否則為真。 !a 邏輯非, a為真時(shí)結(jié)果為假,否則反。
聲明指定了一個(gè)變量的標(biāo)識符,用來描述變量的類型,用于編譯器識別變量名所引用的實(shí)體。 定義是對聲明的實(shí)現(xiàn)或者是實(shí)例化,為變量分配存儲空間,還可以給變量賦初始值。 變量的聲明和定義: int a;//需要建立存儲空間 既是定義,也是聲明 extern int a;//不需要建立存儲空間 只是聲明,不是定義 如果聲明有初始化,就被當(dāng)作定義,即使前面有extern,例如: extern int a = 5; 定義 函數(shù)的聲明和定義: 帶有{ }的都是定義,否則就是聲明。 在編譯時(shí),編譯器只會(huì)檢測程序語法和函數(shù)、變量是否被聲明。如果函數(shù)未被聲明,編譯器會(huì)給出一個(gè)警告。但可以生成目標(biāo)文件。但在鏈接時(shí),鏈接器會(huì)在所有目標(biāo)文件中尋找函數(shù)的實(shí)現(xiàn),如果找不到,就會(huì)報(bào)鏈接錯(cuò)誤碼。 總結(jié): 定義會(huì)分配存儲空間,而聲明不會(huì)分配存儲空間 變量在使用前就要被定義或聲明 在一個(gè)程序中,變量只能定義一次,但可以多次聲明,聲明相當(dāng)于指針,聲明后才可以調(diào)用到函數(shù)的存儲地址。 |
|