static和auto在c语言中的用法
在C语言中,`static`和`auto`是两个关键字,它们在变量声明中有不同的用途。
1. `auto`:
`auto`关键字用于声明一个自动存储期(automatic storage duration)的变量。这意味着变量的生命周期仅限于其所在的代码块(例如函数或循环)。当代码块执行完毕时,该变量将自动销毁。
例如:
```c
void func() {
    auto int x = 10; // x 是一个自动存储期的变量
    // 在这里可以使用 x
} // x 的生命周期结束,自动销毁
```
2. `static`:
`static`关键字用于声明一个静态存储期(static storage duration)的变量。这意味着变量的生命周期在整个程序执行期间都存在,而不是仅限于其所在的代码块。此外,对于局部变量,使用`static`关键字会将其初始化为0而不是未定义的值。static修饰的变量
例如:
```c
void func() {
    static int x = 0; // x 是一个静态存储期的变量
    // 在这里可以使用 x,并且每次调用 func() 时,x 的值会保留
} // x 的生命周期不会结束,会在程序执行期间一直存在
```
注意:在C语言中,函数内部的静态变量只初始化一次,并且保留其值。如果在程序中多次调用该函数,静态变量的值将在下次调用时保留。这对于需要在函数之间保持状态的变量非常有用。