鱼C论坛

 找回密码
 立即注册
查看: 957|回复: 3

[已解决]S129《参数和指针》测试题最后一题

[复制链接]
发表于 2020-3-14 18:00:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
6. 请问下面代码会打印什么?
答案是9,可是我拷贝代码进行执行,编译器报错,请问是什么原因?

题目代码如下:
#include <stdio.h>

void func(int b[][3]);

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

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

        func(a);

        return 0;
}
最佳答案
2020-3-14 18:41:05
本帖最后由 sunrise085 于 2020-3-14 18:43 编辑

我猜你的报错信息应该是:
error: cannot convert ‘int (*)[4]’ to ‘int (*)[3]’ for argument ‘1’ to ‘void func(int (*)[3])’
         func(a);

这是编译器的问题,不同的编译器下编译过程不一样。刚好你所使用的编译器不承认这种方式。

很多编译器下直接引用二维数组名就能够使用该二维数组,可以对该数组的行列进行改变,甚至改变维度,但是有的编译器则不能。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-14 18:14:56 | 显示全部楼层
确定是 errors
而不是 warnings
?

贴报错信息
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-14 18:41:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-3-14 18:43 编辑

我猜你的报错信息应该是:
error: cannot convert ‘int (*)[4]’ to ‘int (*)[3]’ for argument ‘1’ to ‘void func(int (*)[3])’
         func(a);

这是编译器的问题,不同的编译器下编译过程不一样。刚好你所使用的编译器不承认这种方式。

很多编译器下直接引用二维数组名就能够使用该二维数组,可以对该数组的行列进行改变,甚至改变维度,但是有的编译器则不能。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-14 21:50:09 | 显示全部楼层
你这个问题我之前解答过,你可以看看

从形参往实参传递的是数组时,函数的使用
https://fishc.com.cn/thread-159519-1-1.html
(出处: 鱼C论坛)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-7 15:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表