扩大
缩小

静态变量动态变量全局变量局部变量

 1 #include<iostream.h>
 2 int i;//定义的全局变量
 3 void change()
 4 {
 5      //int i=0;//在此处定义了i,屏蔽了全局变量i,如果此处不定义;结果又是另外一种情况的;
 6      static j=0;
 7      int k=0;
 8      cout<<"i="<<i<<" j="<<j<<" k="<<k<<endl;
 9      i+=1;
10      j+=2;
11      k+=4;
12      cout<<"i="<<i<<" j="<<j<<" k="<<k<<endl;
13 }     
14 int main()
15 {
16     int j;
17     static k;
18     cout<<"i="<<i<<" j="<<j<<" k="<<k<<endl;//i=0 j=-858993469 k=0;//全局变量i没有赋值时默认为0,j局部变量没有赋值为随机值,k不为全局变量但是是静态变量,初始值也是0;
19     i+=20;change();
20     //第一次,输出i=0 j=0 k=0;全是默认的数值;经过三个赋值后i=1 j=2 k=4;//注意了,i被屏蔽了哈哈;
21     cout<<"i="<<i<<" j="<<j<<" k="<<k<<endl;
22     //i=20 j=-858993469 k=0 局部调用生命周期只为其大括号范围,执行完后会恢复原来的现场;
23     j+=20;change();
24     //第二次,只有j的值保留第一次已有的;其他的都没有;
25     cout<<"i="<<i<<" j="<<j<<" k="<<k<<endl;
26     k+=20;change();
27     //第三次,j保留了第二次的值;
28     cout<<"i="<<i<<" j="<<j<<" k="<<k<<endl;
29     return 0;
30 }
31 /*
32 i=0 j=-858993460 k=0
33 i=0 j=0 k=0
34 i=1 j=2 k=4
35 i=20 j=-858993460 k=0
36 i=0 j=2 k=0
37 i=1 j=4 k=4
38 i=20 j=-858993440 k=0
39 i=0 j=4 k=0
40 i=1 j=6 k=4
41 i=20 j=-858993440 k=20
42 Press any key to continue
43 */
44 /*i=0 j=-858993460 k=0
45 i=20 j=0 k=0
46 i=21 j=2 k=4
47 i=21 j=-858993460 k=0
48 i=21 j=2 k=0
49 i=22 j=4 k=4
50 i=22 j=-858993440 k=0
51 i=22 j=4 k=0
52 i=23 j=6 k=4
53 i=23 j=-858993440 k=20
54 Press any key to continue
55 */
56      

 

posted on 2012-12-17 17:09  LinuxPanda  阅读(801)  评论(0编辑  收藏  举报

导航