函数传参问题
#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”?有点不明白
因为函数形参中的第二维是3,所以你传入的数组变成了
b = {{1,2,3},
{4,5,6},
{7,8,9},
{10,11,12}}
那么b就是9
BngThea 发表于 2018-5-16 16:36
因为函数形参中的第二维是3,所以你传入的数组变成了
b = {{1,2,3},
{4,5,6},
哦哦,明白了,谢谢 本帖最后由 ABC23 于 2018-5-16 16:56 编辑
你这个函数调用是错的。
==============
int b[],相当于 int (*),3个元素的一维数组,存储指向每一行那三个元素的指针变量。
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;
}
改成这样就能输出11了。
1 warning generated.
11
如果用来写,会产生一个warning。
页:
[1]