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;
} 确定是 errors
而不是 warnings
?
贴报错信息
本帖最后由 sunrise085 于 2020-3-14 18:43 编辑
我猜你的报错信息应该是:
error: cannot convert ‘int (*)’ to ‘int (*)’ for argument ‘1’ to ‘void func(int (*))’
func(a);
这是编译器的问题,不同的编译器下编译过程不一样。刚好你所使用的编译器不承认这种方式。
很多编译器下直接引用二维数组名就能够使用该二维数组,可以对该数组的行列进行改变,甚至改变维度,但是有的编译器则不能。 你这个问题我之前解答过,你可以看看
从形参往实参传递的是数组时,函数的使用
https://fishc.com.cn/thread-159519-1-1.html
(出处: 鱼C论坛)
页:
[1]