为什么可以对数组b进行修改?

时间:2018-10-24 18:42:58

标签: c++ c arrays pointers

a和b都是数组名。为什么允许++ b而不允许++ a。

int main(void)
{
int a[3][3] = { 0 };

foo(a);

return 0;
}
void foo(int b[][3])
{
++b;

}

1 个答案:

答案 0 :(得分:3)

当您声明诸如int b[][3]之类的参数时,编译器实际上将其原样转换为int (*b)[3]。也就是说,b指针而不是数组。

请注意,此翻译仅适用于函数参数,并且仅适用于 first “ dimension”。