我有以下代码:
#include<stdio.h>
void func(int [][3]);
int main(){
int a[][3] = {{1,2,3}, {4,5,6}, {7,8,9}};
func(a);
printf("%d", a[2][1]);
}
void func(int b[][3]){
++b;
b[1][1] = 17;
}
问题:
我希望 printf 语句打印 8 但实际打印 17。
我不明白为什么?
谢谢
最佳答案
注意func()
中的++b
,在此之后,b
(原本指向a[0][0 ]
),现在指向a[1][0]
,所以下面的
b[1][1] = 17;
在外部修改 a[2][1]
。
关于c - 无法理解数组的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27075041/