c - 无法理解数组的行为

标签 c arrays

我有以下代码:

 #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/

相关文章:

ruby - 为什么数组前需要星号?

Android 重启命令 - 谁调用reboot_main()?

python - 加密安全伪随机洗牌 python 中的列表或数组

c++ - C++中的动态数组声明

java - 生成 1 到 25 之间的 3 个随机数? ( java )

java - 从文本文件到ArrayList的稀疏矩阵

c - C 中的静态函数和变量

c - C 中的无限循环,代码块

c - 为什么将未使用的函数参数值转换为 void?

c - 指向字符串 C 的指针