读书人

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

发布时间: 2012-02-27 10:00:22 作者: rapoo

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的

读书人网 >C++

热点推荐