自由之翼有几个战役:这题怎么理解?

来源:百度文库 编辑:高考问答 时间:2024/05/11 14:48:52
#include <stdio.h>
int m=10;
void f(int n)
{
m=m/2;n=15/n;
}
main()
{
int n=3;
f(n);
printf("m=%d,n=%d\n",m,n);
getch();
}
这个题中的n怎么不变呢?。为什么不是5呢?
最后n的结果是3,而不是5,为什么呢?有人拜谢吗?

你的程序中n就该不变。你把实参和形参搞混了。

main函数中定义的变量n是一个实参,函数f中的n是一个形参,虽然都是n,但却是两个不同的量。函数f中的n只在函数中才有效。函数中的形参是不会影响实参的值的。

要想将main中的n变为5,函数f就不能像你那样写为无返回值的函数,必须将函数中的n返回。然后在main中将函数调用写为n=f(n)。

void f(int n)
{
m=m/2;n=15/n;
}
中的n是局部变量,作用域仅限于该函数,函数中的n的值与主函数中的n并不相关
如果要在函数中对主函数中的n进行操作,那么函数应该定义成传入一个指针或者引用