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: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
本来这个数组是 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维可以不写,其它维必须要写 ba21 发表于 2022-9-20 11:10
本来这个数组是 3行4列
int a = {
{1, 2, 3, 4},
可以。{:10_256:} jhq999 发表于 2022-9-20 11:07
在脑子里先变成一维数组c[]={1, 2, 3, 4,5, 6, 7, 8,9, 10, 11, 12}
b转换成一为就是=8所以c ...
了解,鱼油的回复让我多一种思路。很棒!{:5_95:} ba21 发表于 2022-9-20 11:10
本来这个数组是 3行4列
int a = {
{1, 2, 3, 4},
鱼油你的方法也很好,我觉得(jhq999)鱼油的方法给我一种新奇的感觉。我便把他设为最佳答案了。{:5_92:}
页:
[1]