首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

50分只给一人。该如何解决

2012-02-27 
50分只给一人。以下程序中static定义的静态变量还是弄不清他是怎么起作用的,麻烦各位说的简明点。#includes

50分只给一人。
以下程序中static定义的静态变量还是弄不清他是怎么起作用的,麻烦各位说的简明点。
#include   <stdio.h>
#include   <stdlib.h>
int   n=1;
void   func()
{
          static   int   x=4;int   y=10;
          x+=2;
          n+=10;
          y+=n;
          printf   ( "FUNC   :x=%2d   y=%2d   n=%2d\n ",x,y,n);
}
int   main()
{
        static   int   x=5;
        int   y;
        y=n;
        printf   ( "MAIN   :x=%2d   y=%2d   n=%2d\n ",x,y,n);
        func();
        printf   ( "MAIN   :x=%2d   y=%2d   n=%2d\n ",x,y,n);
        func();
        system   ( "PAUSE ");
        return   0;
}


[解决办法]
1.printf ( "MAIN :x=%2d y=%2d n=%2d\n ",x,y,n);
输出5 1 1没问题吧

2,printf ( "FUNC :x=%2d y=%2d n=%2d\n ",x,y,n);
x=4+2=6,n=n+10==1+10=11,y=y+n==10+11=21
所以输出6 21 11

3,printf ( "MAIN :x=%2d y=%2d n=%2d\n ",x,y,n);
这里x还是main里的x,当然还是5,y还是main里的y,当然还是1,n已经在fun函数里i改变成为11
所以输出5 1 11

4,printf ( "FUNC :x=%2d y=%2d n=%2d\n ",x,y,n);
x是static的,所以x是fun函数内部的x,已经为6,然后重复第二步的操作
x=6+2=8,n=n+10==11+10=21,y=y+n==10+21=31
所以输出8 31 21


要注意函数里的y不是static的

热点排行