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了