注册 登录
编程论坛 C++教室

局部变量

我爱你丁长青 发布于 2013-06-14 22:38, 409 次点击
#include<stdio.h>
void f2(int x,int y)
{
    x++;y++;
}
void f1(int x,int y)
{
    f2(x,y);
    printf("n=%d,x=%d=%d,y=%d\n",x,y);
}
void main()
{int n=2,a=3,b=4;
f1(a,b);
printf("n=%d,a=%d,b=%d\n",n,a,b);

}

请高手详细的解释一下程序是什么意思?
3 回复
#2
潇翊2013-06-15 00:45
这个程序执行顺序是:1,n=2,a=3,b=4,然后调用f1函数,x=3,y=4;
                    2,在f1中,先调用f2,x++,y++,但是此时的x,y是f2的局部变量,改变的值出不来,所以还是打印 n=%d(即x)=3,x=%d(即y)=4,后面的y=%d直接省略掉;
                    3,最后回到main,继续打印 n=2,a=3,b=4;
综上所述,这个程序的意思就是让你理解 x,y在充当调用函数的变量时,作用范围只在此函数内部,并不会改变此函数外面的输出值,这就是局部变量。
#3
pauljames2013-06-15 07:43
main调用f1,f1调用f2,函数内部的变量都是私有的,存在于stack,即使同名,也没有关联
#4
lzj125302013-06-16 23:24
在主函数里面传递给函数f1的参数会在函数运行时自动拷贝一份在栈内存里面,函数运行时是对这些副本进行操作,因此不会对主函数中的变量造成任何影响。这就是局部变量,变量创建时可以选择3种类型的内存存储,如果是在静态存储区,变量的存活时间是整个程序。如果是在栈区,那么随着函数体结束会自动消亡。如果是在堆内存,那么同样会保留到整个程序结束或者主动释放内存。
1