在这些情况下,指针增量是多少,为什么?
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]);
将输出二维数组的第二个"行"的第一个元素(整数)。