局部变量:
在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们。这称为局部变量。
全局变量:
而在函数之外定义的变量称为外部变量,也称全局变量。全局变量可以为本文件中其他函数所共用。它的有效范围从定义变量的位置开始到本源文件结束。
示例代码:
/*
** Copyright(C)[2010].All rights reserved.
** Filename: test_static.c
** Description:
** Author Time Version State
** Junjie Li 2010-11-21 V0.0.1 create
*/
#include <stdio.h>
static int j;
void fun1(void)
{
static int i=0;
i++;
printf( "&i=%p/ti=%d/n", &i, i );
}
void fun2(void)
{
j=0;
j++;
printf( "j=%d/n",j );
}
int main( int argc, char **argv )
{
int k;
for ( k=0; k<10; k++)
{
fun1();
fun2();
}
return 0;
}
运行下看看结果;
再把那个static int i=0; 中的static 去掉再看看是什么结果?
结论:被static修饰的局部变量存放在静态区。即使函数运行结束。静态变量的值也不会销毁。函数下次使用时仍然能用到这个值
而一般的局部变量在函数返回时就自动销毁了。就是上面讲过的栈变量
简易结论是:栈变量(包括局部变量)在函数返回的时候会自动销毁。就是说没有了。不能用了。