一维数组 和 二维数组是否是同为数组不同个体??

一维数组

int a[2] = {1 , 2};
int* p_a = a;

int i = 0;

for (; i < 2; ++i)
{
    printf("*(p_a + %d) = %d \n" , i , *(p_a + i));
}

输出:

clipboard.png

二维数组

int a[2][2] = {
    {1 , 2}
};

int* p_a = a;

int i = 0;
int j = 0;

for (; i < 2; ++i)
{
    for (j = 0; j < 2; ++j)
    {
        printf("(*p_a)[%d][%d] = %d\n" , i , j , (*p_a)[i][j]);
    }
}

编译出错:

clipboard.png

这边 (*p_a) 应该都是指向一维数组才对啊,为什么到了二维数组就发生了错误啊...,好像二维数组是一个整体一样....,什么原因??

阅读 2.3k
1 个回答