c语言static的用法举例

  • 格式:docx
  • 大小:29.04 KB
  • 文档页数:5

c语言static的用法举例

在C语言中,关键字static可用于不同的上下文中,其主要功能有以下三种:

1.在函数内部声明的静态变量:

在函数内部声明的变量通常是局部变量,其作用域仅限于函数内部。但是,如果我们在局部变量前加上关键字static,则该变量将成为静态变量,并将其作用域扩展到整个函数的生命周期内。静态变量的存储空间将在程序启动时分配,并在程序终止时释放。静态变量的初始值默认为0。

例如:

```c

#include

void count() {

static int num = 0; //静态变量 num++;

printf("num = %d\n", num);

}

int main() {

count(); //输出:num = 1

count(); //输出:num = 2

count(); //输出:num = 3

return 0;

}

```

在上面的例子中,函数count内部的变量num是一个静态变量。每次调用count函数时,num的值都会自增,并且num的值在多次调用之间会被保留下来。

2.在文件内部声明的静态变量: 在文件内部声明的变量通常是全局变量,其作用域为整个文件,不能被其他文件所访问。但是,如果我们在全局变量前加上关键字static,则该变量将变为静态全局变量,作用域仍限制在文件内部。静态全局变量的生命周期与整个程序的运行周期相同。

例如:

```c

#include

static int count = 0; //静态全局变量

void increment() {

count++;

}

int main() {

increment();

increment();

printf("count = %d\n", count); //输出:count = 2 return 0;

}

```

在上面的例子中,全局变量count被声明为静态变量,因此它只能在所在的文件中访问。函数increment对count进行自增操作,最终输出count的值为2。

3.在函数声明和定义时使用静态函数:

函数通常是全局可见的,即可以被其他文件调用。但是,如果我们在函数声明和定义时使用关键字static,该函数将成为静态函数,作用域仅限于声明或定义它的文件内部,不能被其他文件所调用。

例如:

```c

#include

static void showMessage() { //静态函数

printf("This is a static function.\n"); }

int main() {

showMessage(); //调用静态函数

return 0;

}

```

在上面的例子中,函数showMessage被声明为静态函数,它只能在所在的文件中被调用。这种做法可以避免静态函数被其他文件中的代码错误地调用。

需要注意的是,静态变量和静态函数的关键字都是static,但它们具有不同的作用和用法。静态变量用于限制变量的作用域和生命周期,静态函数用于限制函数的作用域。静态变量和静态函数都是在编译时分配内存,且在程序运行期间不会释放。