指針一個(gè)種特殊的變量,用來(lái)存放其他變量的地址。
定義一個(gè)變量,就會(huì)分配內(nèi)存,就會(huì)開(kāi)空間,有地址,地址與變量的值無(wú)關(guān)系。變量地址不會(huì)改變。
int theVariable = 5;
int *pPointer = &theVariable;
那么尋找變量:
1.通過(guò)變量名,可以訪問(wèn)變量。
2.通過(guò)地址,可以找到變量。(地址唯一,不變)
指針只保存地址。
一個(gè)變量的地址是有意義的,可以進(jìn)行運(yùn)算(+/-數(shù)字,相減,比較)。
指針就是一個(gè)用來(lái)保存地址的特殊變量。
=================================
由于地址有類(lèi)型,所以指針也有類(lèi)型。(不信?只知道地址,如果不知道類(lèi)型,取幾個(gè)字節(jié)無(wú)從獲知)。
int類(lèi)型的地址就是四個(gè)字節(jié)。
所以一定要明確
地址需要賦予一個(gè)類(lèi)型的概念。
int i = 5;
取地址符號(hào),會(huì)取得有類(lèi)型的地址,&i(整型變量的地址)
char ch = 'A';
&ch,就是字符類(lèi)型的地址
int *p = &i;
這個(gè)語(yǔ)句的含義:定義一個(gè)類(lèi)型是int的指針變量p,并將i的地址給p,p只存儲(chǔ)了地址。
指針類(lèi)型必須與地址類(lèi)型一致。
指針的類(lèi)型由它所指向的存儲(chǔ)空間的內(nèi)容的類(lèi)型來(lái)確定,什么類(lèi)型的變量,就用什么類(lèi)型指針。任何數(shù)據(jù)類(lèi)型,都有指針。
指針是用來(lái)保存變量的地址,所以int *p = 2000; 不可以!!
指針+1一定是找到下一個(gè)變量。有類(lèi)型信息進(jìn)而找到下一個(gè)同類(lèi)型的變量。
int i = 100;
int *p = &i;
char ch = 'a';
p = &ch;
錯(cuò)!指針類(lèi)型嚴(yán)格匹配。
可以給指針賦一個(gè)NULL,NULL表示內(nèi)存0號(hào)單元,起始位置。不可以讀,也不可以寫(xiě)。禁止訪問(wèn)。
試圖訪問(wèn),段錯(cuò)誤。
在使用指針之前,
===========================
char *p = "hello";//存于常量區(qū),不可以修改
"hello"一個(gè)字符串,也就是一個(gè)字符數(shù)組,p的地址就是這個(gè)字符數(shù)組第一個(gè)元素的地址:一個(gè)char類(lèi)型的地址。
p[0] 就是'h'。
===========================