1、指針簡單定義。
2、指針的類型。
3、野指針。
4、指針運算。
5、指針和數組的認識。
6、二級指針。
7、指針數組。數組
## 1、指針的簡單定義 **指針是一種利用地址作運算的工具,它直接指向地址,經過它找到地址的內存單元。** **指針是個變量,存放內存單元的地址。 指針須要先定義,須要使用指針,也要爲指針申請一個空間,指針的空間裏放的事所指變量的地址。** >int a=5;//在內存中開闢一塊空間 int* p=&a;//申請一個int指針,用&取a的地址賦值給指針。 //隨後p表明a的地址,*p表明a的值,既*p=2; ## 2、指針的類型 **//要想存放地址,這個指針的大小就必須有足夠的空間去存放其餘地址, //對於32位系統,最大地址須要4個字節,64位系統須要8個....... //因此指針的大小都是4個字節。 //對於變量須要說明其類型,指針也是同樣,指針的類型決定指針指向的也是一樣類型, //不過經過強轉能夠指向不一樣類型,既把其餘類型的值轉爲指針類型。** >int *p=NULL;//既存放int類型變量的地址。 char *p=NULL; short *p=NULL; long *p=NULL; float *p=NULL; double *p=NULL; void *p=NULL;//無類型指針,能夠將其它類型的地址值賦給它,但它不能隨便賦值給其餘類型。 //強轉以下: int n=10; char *p=(char *)&n;//將int類型的變量地址強轉爲char類型。 //指針類型決定了,指針向前向後的移動距離。 ## 3、野指針 **野指針既指針指向的位置不知道。 緣由:指針未初始化、指針訪問越界、指針指向的空間被釋放。** ## 4、指針運算 >int a=10; int *p=&a; p++;//既對a地址向後加1; *p+1; //既對a的值+1; *p=5;//既將a的值改成5; 容許指向數組的指針在數組中比較位置大小。不能夠與其它數組比較。 ## 5、指針和數組的認識。 >int arr[]={1,2,3,4,5};//arr爲首元素,表明整個數組。 int *p=arr;//p存放的事首元素的地址。 p[0]=1; *p[0];//表示首元素地址 ## 6、二級指針 **指針變量也是變量,既指針的地址,指針p存放的是指向地址,指針p的地址就存放在ppa中, 既指向指針的的指針中。ppa既二級指針。 ## 7、指針數組** **是數組,都之後面的詞爲最終結果。 指針數組: 它首先是一個數組,這個數組,存放的是指針。** ### 數組指針: **首先它是一個指針,這個指針是指向數組的。**