C基础-2 数组指针测试

void test1()
{
    int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
    int(*p)[4];
    p = (int(*)[4])a;
   
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 4; j++) printf("%d、", p[i][j]); //或者 *(*(p+i)+j) 或者 *(p[i]+j)
        printf("\n");
    }
}

数组指针,指的是数组名的指针,即数组首元素地址的指针。即是指向数组的指针。例:int (*p)[4]; p即为指向数组的指针,又称数组指针

输出:

 

 

 1、换成如下代码输出结果改变

void test1()
{
    int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
    int(*p)[2];
    p = (int(*)[2])a;
   
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 4; j++) printf("%d、", p[i][j]); //或者 *(*(p+i)+j) 或者 *(p[i]+j)
        printf("\n");
    }
}

 

 

 

 

 2、换成下面代码,跳过2个元素

 

 3、下面代码一次跳过4个元素

 

 可见定义(*p)[n]中n的大小,影响数组方式取值和自身地址计算。

4、下面这个代码输出和直接按数组方式使用是不一样的

 

 

 

posted @ 2021-04-18 13:04  zhaogaojian  阅读(65)  评论(0编辑  收藏  举报