投入就放过 发表于 2021-3-26 11:24:36

课后作业29

#include <stdio.h>

void func(int b[]);

void func(int b[])
{
      printf("%d\n", b);
}

int main(void)
{
      int a = {
                {1, 2, 3, 4},
                {5, 6, 7, 8},
                {9, 10, 11, 12}
      };

      func(a);

      return 0;
}

为什这题打印的是9呢,不是11呀?

jackz007 发表于 2021-3-26 11:39:34

      a 是一个拥有 3 行 4 列的二维数组,被作为参数 b 传入 func() ,在 func() 中,b 被视为一个拥有多行 3 列的二维数组,那么,元素 b 如果换算为一维数组索引是 2 * 3 + 2 = 8,如果将 8 换算为 3 行 4 列的二维数组索引是 a = a 当然就是 9 了。

投入就放过 发表于 2021-3-26 11:44:24

jackz007 发表于 2021-3-26 11:39
a 是一个拥有 3 行 4 列的二维数组,被作为参数 b 传入 func() ,在 func() 中,b 被视为一个拥有 ...

懂了,谢谢
页: [1]
查看完整版本: 课后作业29