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