Saito77 发表于 2022-9-20 10:24:36

S1E29测试题.第六小问

#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
麻烦鱼油们解答!

jhq999 发表于 2022-9-20 11:07:28

本帖最后由 jhq999 于 2022-9-20 11:25 编辑

在脑子里先变成一维数组c[]={1, 2, 3, 4,5, 6, 7, 8,9, 10, 11, 12}
b转换成一为就是=8所以c=9

也可以这么转换 b=a[(2*3+2)/4][(2*3+2)%4]=a=9

ba21 发表于 2022-9-20 11:10:38

本来这个数组是 3行4列
int a = {
                {1, 2, 3, 4},
                {5, 6, 7, 8},
                {9, 10, 11, 12}
      };
传参进函数后,你把它改为了4行3列

a[] = {
                {1, 2, 3},
                {4, 5, 6},
                { 7, 8,9},
               { 10, 11, 12},
      };
多维数组声明第1维可以不写,其它维必须要写

Saito77 发表于 2022-9-20 14:10:17

ba21 发表于 2022-9-20 11:10
本来这个数组是 3行4列
int a = {
                {1, 2, 3, 4},


可以。{:10_256:}

Saito77 发表于 2022-9-20 14:12:50

jhq999 发表于 2022-9-20 11:07
在脑子里先变成一维数组c[]={1, 2, 3, 4,5, 6, 7, 8,9, 10, 11, 12}
b转换成一为就是=8所以c ...

了解,鱼油的回复让我多一种思路。很棒!{:5_95:}

Saito77 发表于 2022-9-20 14:17:59

ba21 发表于 2022-9-20 11:10
本来这个数组是 3行4列
int a = {
                {1, 2, 3, 4},


鱼油你的方法也很好,我觉得(jhq999)鱼油的方法给我一种新奇的感觉。我便把他设为最佳答案了。{:5_92:}
页: [1]
查看完整版本: S1E29测试题.第六小问