1.數組和指針
int array[5] = {1,2,3,4,5};// 定義數組
// 1. 指針和數組的關系
int * pa = array;
pa = array; // p[0] == *(p+0) == array[0] == *(array+0) printf("%p\n", pa); printf("%p\n", array); /* 訪問數組兩種方式 1. 下標法訪問 數組名[下標] 指針[下標] 下標:偏移量 2. 指針法訪問 *(p+1) */
2.指針數組
int array[5] = {1,2,3,4,5};// 定義數組 int (*p)[5] = &array;// 定義數組指針 int *arr[5];//指針數組,數組中所以得元素保留的是int指針的位置
*p = p[0]; (*p)[1] == array[1]; p[0][1] == (*p)[1] == array[1];
3.二維數組指針
// 3 二維數組的指針 int array2[2][3] = {{1,2,3},{4,5,6}}; int (*p2)[2][3] = NULL; p2 = &array2;// 把數組賦值給數組指針 *p == array2; (*p)[0][0] == p[0][0][0]; // /** // p + 1 跨過6*4 個字節 // p[0] + 1 跨過3*4個字節 // p[0][0] + 1 跨過4個字節 // p[0][0][0] + 1 二維數組第一個元素值+1 // */
4.指針數組
數組中的元素都是指針(地址)
int *arr[5];//指針數組,數組中所以得元素保留的是int指針的位置 int a = 1; arr[1] = &a;
5.指針的指針
//4.二維指針 int a ; int *p = &a; int **pp = &p;// 指針的指針