有关static的问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 02:29:31
public partial class _Default : System.Web.UI.Page
{
static int i = 0;
protected void Page_Load(object sender, EventArgs e)
{
i++;
Response.Write(i);
}
}
如果没有static的话每次输出的都是0,这是为什么呢.
这里的i是全局的啊.理应全局的自然是静态的呀
这是怎么回事呢

每次调用都新建一个实例对象,而每个实例对象都是独立的,所以每次都是0.如果static则所有实例共享这个i,所以值不断增加。

你自己看嘛。上面是i=0.如果你在别的方法中调用的话。明显就又回到0了嘛。你不信把int i=0;改成int i;也是一样的效果。STATIC表示静态成员。不可以在别的地方改。

关键字extern和static用来说明具有静态存储期的变量和函数。用static声明的局部变量只能被定义该变量的函数所识别,但是不同于自动变量的是,static变量在其函数被调用退出后,仍保留其值。下次函数被调用时,可以访问最近一次被修改后的值。static变量的声明方法如下:

static int si = 1;

1、静态全局变量
定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量。
特点:
A、该变量在全局数据区分配内存。
B、初始化:如果不显式初始化,那么将被隐式初始化为0。
2、静态局部变量
定义:在局部变量前加上static关键字时,就定义了静态局部变量。
特点:
A、该变量在全局数据区分配内存。
B、初始化:如果不显式初始化,那么将被隐式初始化为0。
C、它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或 语句块结束时,其作用域随之结束。

3、静态函数(注意与类的静态成员函数区别)
定义:在函数的返回类型前加上static关键字,函数即被定义成静态函数。
特点:
A、静态函数只能在本源文件中使用(这是与普通函数区别)
例(摘于C++程序设计教程---钱能主编P103):
//file1.cpp void fn(); void staticFn() void main() { fn(); staticFn(); } //file2.cpp #