诚信肥宅 发表于 2020-3-14 18:00:18

S129《参数和指针》测试题最后一题

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

题目代码如下:
#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;
}

人造人 发表于 2020-3-14 18:14:56

确定是 errors
而不是 warnings
?

贴报错信息

sunrise085 发表于 2020-3-14 18:41:05

本帖最后由 sunrise085 于 2020-3-14 18:43 编辑

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

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

很多编译器下直接引用二维数组名就能够使用该二维数组,可以对该数组的行列进行改变,甚至改变维度,但是有的编译器则不能。

4goodworld 发表于 2020-3-14 21:50:09

你这个问题我之前解答过,你可以看看

从形参往实参传递的是数组时,函数的使用
https://fishc.com.cn/thread-159519-1-1.html
(出处: 鱼C论坛)
页: [1]
查看完整版本: S129《参数和指针》测试题最后一题