指针系列六(指针与二维数组)


    //指针与二维数组
    int array[4][5] = { 0 };
    printf("sizeof int: %d\n", sizeof(int));
    printf("array: %p\n", array);
    printf("array + 1 : %p\n",array +1);

//上面程式证明 array+1,地址加了20,每一个整形四个字节,相当于跨越了五个字节

//证明了array是指向包含了五个元素的数组的指针

 

//指针解引用

    int array[4][5] = { 0 };
    int i, j, k=0;
    for ( i = 0; i < 4; i++)
    {
        for ( j = 0; j < 5; j++)
        {
            array[i][j] = k++;
        }
    }

    printf("*(array+1): %p\n",*(array +1) );
    printf("array[1] :%p\n", array[1]);
    printf("&array[1][0]:%p \n", &array[1][0]);
    printf("**(array+1): %d\n", **(array + 1));   

//-----------------------

下面相等

    printf("*(*(array+1)+3): %d\n", *(*(array + 1) + 3));//第二行第四列   8
    printf("array[1][3]:%d \n", array[1][3]);//第二行第四列   8

//-----------------------

    // 数组指针与二维数组

    int array[2][3] = { {0,1,2},{3,4,5} };
    int (*p)[3] = array;
    printf("**(p+1):%d\n", **(p + 1));
    printf("**(array+1):%d\n", **(array + 1));
    printf("array[1][0]:%d\n", array[1][0]);

    printf("*(*(p+1)+2):%d\n", *(*(p + 1) + 2));
    printf("*(*(array+1)+2):%d\n", *(*(array + 1)+ 2));
    printf("array[1][2]:%d\n", array[1][2]);

 

posted @ 2021-12-02 10:41  江南王小帅  阅读(51)  评论(0)    收藏  举报