指針的基本使用
只能用于存儲地址
- 在64位編譯器下,指針占用8個字節
定義指針變量
- 數據類型 * 指針名稱;
- 數據類型:說明定義的指針變量能夠保存申明類型的變量的地址
- 注意:指針變量是什么類型,那么將來就只能保存什么類型變量的地址
- 例如:指針變量是int類型,那么將來就只能保存int類型變量的地址
- *:沒有任何特殊含義,僅僅是為了標示這是一個指針變量
- 指針名稱:用于區分不同的指針變量
// 普通變量
int num;
num = 10;
// 指針變量
int *p;
// 將num的地址存儲到p這個指針中
p = #
// 指針變量前的*號表示訪問指針變量指向的那一塊存儲空間
// 也就是說 *p = num
*p = 55;
指針的注意點
- 指針只能保存地址
- 同一個變量可以有多個指針指向他
- 指針的指向可以修改
- 不要訪問野指針
- 指針類型是什么類型,就只能指向什么類型的數據
多級指針(很少見,了解就行)
- 多級指針的操作,最簡單的方法,就是通過幾顆星來存儲,就通過幾顆星來訪問
char c = 'a';
char *cp;
cp = &c;
char **cpp;
cpp = &cp;
char ***cppp;
cppp = &cpp;
/**
*cp == c;
*cpp == cp;
*cppp = cpp;
**cpp == *(*cpp) == *cp == c;
***cppp == **(*cppp) == *(*cpp) == *cp == c;
cp中存放的是c的地址
cpp中存放的是cp的地址
cppp中存放的是cpp的地址
*cppp 取出的時cpp
而cpp中存放的時cp的地址,所以*(*cppp)取出的是cp
而cp中存放的是c的地址,所以*(*(*cppp))取出的是c
*/