c/c++語言的關鍵:指針

指針的簡單認識

指針在c中的地位舉足輕重,指針是必需要學好。由簡入難。

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、指針數組**
**是數組,都之後面的詞爲最終結果。
指針數組:
它首先是一個數組,這個數組,存放的是指針。**
### 數組指針:
**首先它是一個指針,這個指針是指向數組的。**
相關文章
相關標籤/搜索