第2个回答 2020-01-08
错误!
第一,对于动态存储方式,在函数调用开始时分配动态存储空间,函数结束时释放这些空间,例如传值的函数调用,int
x=3,y=4;
fun(x,y)//函数里x=4,y=3
;函数调用结束后释放,main函数仍然是x=3,y=4
第二,在静态存储区内分配的存储单元,在程序整个运行期间都不释放,若非必要,尽量不要静态变量
int
main()
{
int
f(int);
int
a=2,i;
for(i=0;i<3;i++)
printf("%d\n",f(a));
return
0;
}
int
f(int
a)
{
auto
int
b=0;//自动局部变量
static
c
=3;//静态局部变量
b=b+1;
c=c+1;
return(a+b+c);
}
输出为
7(2+1+4)
8(2+1+5)
9(2+1+6)