數組和指針存在一定的區別與聯繫
指針是一個變量,意味着它的值可以被重新賦予,數組名是和特定的內存地址判定的,不能被改變。
一維數組名和普通的指針在使用數組的方法上是一致的,都可以通過index來引用和修改數據。
例如:
int data[5];
int *p;
p = data;
二維數組在使用指針進行操作時存在一定的不同,指針是一個普通的變量,無法知道二維數組的結構,所以在指針的定義和使用上存在指針數組和數組指針兩種。
指針數組顧名思義就是存放指針的數組,數組指針顧名思義就是指向數組的指針。
定義形式:
指針數組 int *p[3];
數組指針 int (*x)[3];
指針數組中存放三個指針變量,數組指針中存放一個每行三個數據的數組。
如果希望使用數組指針來操作二維數據數據,需要明白數組指針指向的是二維數組,當x+1時,指針的移動爲一行的數據地址長度。
int data[3][4];
x = data;
data[M][N] 的數據就是*(*(x+M)+N)。
當使用二維指針指向某個整數時,需要使用一維指針來轉接。
例如:int i = 8;
int **p;如果希望指針p指向i,希望**p的內容是i的值,需要通過其他的指針int *mid;
mid = &i;
p = ∣則**p就是i的數據。+