为啥可以修改数组 b? [复制]

Posted

技术标签:

【中文标题】为啥可以修改数组 b? [复制]【英文标题】:Why is modification of array b possible? [duplicate]为什么可以修改数组 b? [复制] 【发布时间】:2018-10-24 18:42:57 【问题描述】:

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

int main(void)

int a[3][3] =  0 ;

foo(a);

return 0;

void foo(int b[][3])

++b;


【问题讨论】:

因为a是一个数组,而b不是 【参考方案1】:

当您声明int b[][3] 之类的参数时,编译器真正将其翻译为int (*b)[3]。也就是说,b 是一个指针,而不是一个数组。

请注意,这种翻译只发生在函数参数上,并且只发生在第一个“维度”。

【讨论】:

以上是关于为啥可以修改数组 b? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥数组不是左值? [复制]

为啥这个函数调用后数组会改变? [复制]

为啥使用 copy() 时字符串和数组的处理方式不同? [复制]

为啥要从方法修改变量? [复制]

为啥修改 array.slice() 也会改变原始数组?

如果它是引用类型,为啥我可以清空一个数组? [复制]