C语言中的static

最近在学习C语言,其中看到static的时候发现和OOP语言含义有所不同。
首先static分为两种情况。

1. 全局静态变量

A文件中定义一个全局静态变量a,在B文件引入A文件后是不能访问这个变量a的。
这个可以理解成swift中的fileprivate,a的作用域为A文件,外部文件无法访问。

2.局部静态变量(在函数中声明一个static变量)

A文件中定义一个全局静态变量a,在B文件中无法访问。这个和情况1一致。
除此之外
static的变量只会分配一次内存空间,多次调用static int a = 0 并不会真的将a变成0。

void printStr()
{
int normal = 0;
static int stat = 0; //this is a static local var
printf("normal = %d ---- stat = %d\n",normal, stat);
normal++;
stat++;
}

在这个函数中,打印的值会是以下的结果。
normal = 0 , stat = 调用这个函数的次数。

发布者

Zmsky

http://xloli.net/?page_id=11

发表评论