c语言中数组,指针数组,数组指针,二维数组指针
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;// 指针的指针