(1)指針是存放地址值的變量或者常量。數組
例如:int a=1;&a就表示指針常量(「&」表示取地址運算符,也即引用)。ide
int *b,b表示的是指針變量(注意,是b表示指針變量而不是*b),*表示要說明的是指針變量。你們注意int *b[2]和int(*b)[2]是不一樣的,int *b[2]表示一個指針數組,而int(*b)[2]表示含有兩個元素的int指針。函數
(2)指針類型:能夠把指針名字去掉,剩下的就是這個指針spa
例如:int *a;//指針類型爲int *指針
int **a;//指針類型爲int **內存
int *(*a)[8];//指針類型爲 int *(*)[8]編譯器
(3)指針所指向的類型:是指編譯器將把那一片內存所看待成的類型。這裏只要把指針聲明it
語句中的指針名字和名字右邊的「*」號去掉就能夠了,剩下的就是指針所指向的類型。編譯
(4)指針的應用——傳遞參數。其實它能夠至關於隱式的返回值,這就比return的方法更加靈活了,能夠返回更多的值。
class
void example(int *a1,int &b1,int c1)
{
*a1*=3;
++b1;
++c1;
}
*a1和b1的值都改變了,而c沒有變。這是因爲a1指針,其指向的地址不變,因此當a1指向的值改變了,*a的值也就改變了。在函數中的參數使用了引用(int &b1),b1是b的別名,也能夠把它看成特殊的指針來理解,因此b的值會改變。函數中的參數int c1只是在函數中起做用,當函數結束時候便消失了。
注:全局變量存放在全局變量的內存區,它一直是存在的;而局部變量則是存在於函數的棧區,當函數example2調用結束後便消失,是b指向了一個不肯定的區域,產生指針懸掛。