现在的位置: 首页 > 综合 > 正文

"函数值"引出的不小的问题

2013年12月03日 ⁄ 综合 ⁄ 共 576字 ⁄ 字号 评论关闭

我举个例子吧

xu(int a,int b)

{int temp;

 if(a>b)

  temp=a;a=b;b=temp;

}

main()

{int m=4;

int n=2;

xu(m,n);

printf("%d,%d",m,n);

这个很明显是一个值传递,但是当我改了一些东西以后就不一样了

请看:

xu(int a,int b)

{int temp;

 if(a>b)

  temp=a;a=b;b=temp;

 return  a,b;

}

main()

{int m=4;

int n=2;

int s;

s=xu(m,n);

printf("%d,%d",m,n);

这个时候值传递似乎变成了地址传递,其实并不是这样,要说谁在搞怪,那就是函数值,他把被调函数的值又

返回给了s,所以似乎变成了地址传递

但是你要注意的是这种特殊的函数返回值,也就是空类型void;

看程序:

void xu(int a,int b)

{int temp;

 if(a>b)

  temp=a;a=b;b=temp;

}

main()

{int m=4;

int n=2;

xu(m,n);

printf("%d,%d",m,n);

这个时候你需要注意的是,首先不能用return,因为无返回值,又怎么会有return,其次是函数调用的时候只能用普通的调用,而不能用表达式,这个是因为表达式他是把右值赋给左值,无右值又怎么会赋给左值呢?

希望我费了这么多口水大家能明白!

 

抱歉!评论已关闭.