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;// 指针的指针

 

posted @ 2018-05-05 22:39  myvic  阅读(2414)  评论(0编辑  收藏  举报