#include <stdio.h> int b=0; int fun(int a); void main(void) { int a=2,i; for(i=0;i<3;i++) printf("

"%d\n",fun(a));
printf("\n");
}
int fun(int a)
{
int c=3;
a=a+1;
b+=1;
c++;
return(a+b+c);
}

第1个回答  2013-04-23
兄弟你到底要问什么嘛!?返回值?初始化机制,还是问哪里有错你不知道!?你总得有个问吧!就这样一段代码,神仙才知道你到底要干什么!追问

为何输出8 9 10

追答

你知道它的传值方式是值传递吧!?意思就是方法里的值(局部变量)初始化的时候并没有被分配内存空间。只有当程序执行或者说解释道该方法时才会被分配内存空间。然而方法体中的所以属性都是被存储中该方法所以被分配的内存空间中的!它们会随着该方法执行的结束而被销毁!所以就造成了方法体里的值的该变并不能改变方法体外的值(当然只针对于值类型)。你可以被认为传入方法体的形参a其实是一个新的变量。和方法外部的a其实根本就不是一个东西了。而在整个过程中只有b是全局变量;它的值是在对象创建的过程中就被赋予了的。它的作用范围要大于方法体,所以就算方法执行完毕但它仍然不会被销毁。其实也就是涉及到内存的分配和作用范围的问题

本回答被提问者采纳