麻烦大家给我解决一下这个函数问题,谢谢了

func (int x)
{
int y=13;
x=x+y;
return x;
}
main()
{
int x=3;
func(x);
printf("%d",x+x);
}
我想问一下大家为什么输出的不是16,而是6啊
麻烦大家了

fun(int x)这个函数压根就没使用

因为func(x) 这个x=3,输出语句是printf("%d",x+x);而不是printf("%d",fun(x)+x);

func(int x)传进去的是值传递 不是引用传递 如果是引用传递结果就是 16

func这个函数的返回值类型没有标出,而且在main函数里func函数的返回值没有被利用,所以main函数里的x依旧是3,结果就是6。建议1:在func函数的实现中添加返回值类型int,2: printf("%d",func(x)+x);这样输出就是你要的值了。愚见

不对,如果是 printf("%d",func(x)+x);结果是 19;printf("%d",func(x)+func(x));结果是 32

x是3,两个x自然是6,函数返回你压根没用直接丢了。

func (int x)
{
int y=13;
x=x+y;
return x;
}
x是形参,调用func(x)时,在func内部 x是副本,改变值不会作用到外面
改成指针就可以了
func (int * x)
{
int y=13;
x=x+y;
return x;
}
int* x ,t;
t = *x = 3

func(x);

printf("%d",*x);

输出就是16了