请问这个程序是在做什么
#include <stdio.h>
void fn()
{
static int x = 1; //定义静态局部变量
x*=2;
printf("x=%d\n",x);
}
int main()
{
int i;
for(i=0;i<5;i++)
{
fn();
}
extern int x; //调用外部变量
printf("x=%d\n",x);
return 0;
}
int x=100;
#include <stdio.h>
void fn()
{
static int x = 1; //定义静态局部变量
x*=2;
printf("x=%d\n",x);
}
int main()
{
int i;
for(i=0;i<5;i++)
{
fn();
}
extern int x; //调用外部变量
printf("x=%d\n",x);
return 0;
}
int x=100;
2016-06-02
定义静态局部变量static和声明外部变量extern的用法与理解。
#include <stdio.h>
void fn() //定义无返回值无参数变量fn()
{
static int x = 1; //定义静态局部变量 ,注意:定义后的静态局部变量只赋一次初值
x*=2; //x=x*2
printf("x=%d\n",x);
}
int main()
{
int i;
for(i=0;i<5;i++) //循环调用5次自定义函数fn(),注意:因为fn()中定义了静态局部变量,这个变量
{ //只赋一次初始值,所以第2次调用时就不会执行static int x =1;的语句,而是根据
fn(); //第一次的赋值结果x=1*2=2来继续计算,即第二次结果为x=2*2=4,第三次8,第
} //四次16,第五次32。如果没有static,那么每次调用都会赋初值,结果也是一样的
//即x=1*2=2
extern int x; //声明将调用外部变量,这里将X取最后一行定义的外部变量int x=100;结果为100
printf("x=%d\n",x); //如果没有extern,则单纯的定义一个x,因为没赋初值,默认为0,结果为0。
return 0;
}
int x=100;
这道题就是让我们static和extern的作用。
举报