C-将指针递增至静态分配的数组



在这些情况下,指针增量是多少,为什么?

void f(int a[])
{
    a++;
    printf("%d", *a);
}
void g(int a[][M])
{
    a++;
    printf("%d", *a[0]);
}

可以说,在main中,我有一个静态分配的带有> n elements和静态分配 matrix( 2d Array )带有 n 行和 m 列,我正在调用功能 f g 我无法在代码中写这篇文章,因为我无法用很多代码发布问题,几乎没有文本)。

在两种情况下,指针仅递增一次。:)

a++;

它们的值通过指向对象类型的大小更改。因此,第一个指针的值通过sizeof( int )更改,第二个指针的值由sizeof( int[M] )更改考虑到参数int a[][M]已调整为int ( *a )[M]

因此,在功能中,两个指针都将指向数组的第二个元素。对于二维数组,其元素是一维数组。和这个语句

printf("%d", *a[0]);

将输出二维数组的第二个"行"的第一个元素(整数)。

相关内容

  • 没有找到相关文章

最新更新