C语言static举例
时间: 2023-11-11 20:03:44 浏览: 40
当我们在C语言中使用 static 关键字时,它可以在两种不同的上下文中使用。首先,它可以用在函数内部的变量上,这就使这个变量保留其在上一个函数调用之后的值。其次,当一个 static 变量被定义在一个文件的顶部时,它就成为了一个全局变量,但是它只能在定义它的文件中被访问。这种变量被称为静态全局变量。
相关问题
extern c语言举例
C语言中,auto和static关键字用于定义变量的存储类型。
auto: 默认存储类型,在函数体内定义的变量默认为auto。这种类型的变量存储在栈中,作用域仅限于所在函数。
static: 存储类型为静态,在整个程序运行期间都存在。这种类型的变量存储在静态存储区中,作用域仅限于所在文件。
extern: 存储类型为外部,用于在一个文件中声明另一个文件中已经定义过的变量或函数。extern变量或函数只是声明,而不是定义。
在C语言中,static应用程序举例
下面是一些C语言中`static`的应用程序举例:
1. 声明静态变量
```c
void func(){
static int count = 0;
count++;
printf("调用函数的次数:%d\n", count);
}
int main(){
func(); //输出:调用函数的次数:1
func(); //输出:调用函数的次数:2
func(); //输出:调用函数的次数:3
return 0;
}
```
在上面的例子中,`count`是一个静态变量,每次调用`func()`函数时,`count`的值加1。由于`count`是静态变量,它的值在函数调用结束后并不会被销毁,而是保留在内存中,所以每次调用`func()`函数时,`count`的值会继续累加。
2. 声明静态函数
```c
static int add(int a, int b){
return a + b;
}
int main(){
int sum = add(10, 20);
printf("10 + 20 = %d\n", sum);
return 0;
}
```
在上面的例子中,`add()`函数被声明为静态函数,因此它只能在本文件中被调用,不能被其他文件调用。
3. 声明静态全局变量
```c
static int count = 0;
void func(){
count++;
printf("调用函数的次数:%d\n", count);
}
int main(){
func(); //输出:调用函数的次数:1
func(); //输出:调用函数的次数:2
func(); //输出:调用函数的次数:3
return 0;
}
```
在上面的例子中,`count`是一个静态全局变量,它只能在本文件中被访问,不能被其他文件访问。
4. 静态断言
```c
#include <assert.h>
#define SIZE 10
int main(){
static_assert(SIZE == 20, "数组大小必须是20");
int arr[SIZE];
return 0;
}
```
在上面的例子中,使用`static_assert`关键字进行静态断言,如果`SIZE`不等于20,则编译失败,并输出错误信息"数组大小必须是20"。