#include "iostream.h" int p(int x) { static int y=1; y=y+1; return (x+y);} int main() { cout<<p(1)<<endl; cout<<p(2)<<endl; }
答案是3和5
c语言的static变量是在程序加载的时候就为之分配内存的,一直到程序结束,只能初始化一次,而不像普通变量那样函数执行一次分配一次。所以当第一次执行p(1)的时候,y已经加1了,下次执行p(2)时,y不会恢复成1,还是2。
与全局变量的区别是,可见域上有区别,这是局部静态变量,在函数外不可见,但是依然在内存中存在。
|