c语言中数组,指针数组,数组指针,二维数组指针

时间:2021-02-03 07:36:16

1.数组和指针

int array[] = {,,,,};// 定义数组
   // 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[] = {,,,,};// 定义数组
int (*p)[] = &array;// 定义数组指针
int *arr[];//指针数组,数组中所以得元素保留的是int指针的位置
    *p = p[];
(*p)[] == array[];
p[][] == (*p)[] == array[];

3.二维数组指针

    // 3 二维数组的指针
int array2[][] = {{,,},{,,}};
int (*p2)[][] = NULL;
p2 = &array2;// 把数组赋值给数组指针
*p == array2;
(*p)[][] == p[][][];
// /**
// p + 1 跨过6*4 个字节
// p[0] + 1 跨过3*4个字节
// p[0][0] + 1 跨过4个字节 // p[0][0][0] + 1 二维数组第一个元素值+1 // */

4.指针数组

数组中的元素都是指针(地址)

    int *arr[];//指针数组,数组中所以得元素保留的是int指针的位置
int a = ;
arr[] = &a;

5.指针的指针

    //4.二维指针
int a ;
int *p = &a;
int **pp = &p;// 指针的指针