📜  C中静态变量的默认值是什么?(1)

📅  最后修改于: 2023-12-03 14:40:25.507000             🧑  作者: Mango

C中静态变量的默认值是什么?

在C语言中,静态变量是使用static关键字声明的变量,它具有在整个程序执行期间保持存储和值的特性。与自动变量不同,静态变量的生命周期不受函数或代码块的限制。

静态变量在声明时会分配内存空间,但如果没有显式地初始化,它们会被赋予默认值。默认值的具体取决于静态变量的类型和作用域:

默认值规则:
  1. 如果静态变量是数值类型(例如intfloat等),它们的默认值为0。
  2. 如果静态变量是指针类型,它们的默认值为NULL,即空指针。
  3. 如果静态变量是字符类型(例如char),它们的默认值为'\0',即空字符。
示例代码:
#include<stdio.h>

void testFunction() {
    static int staticInt;
    static char staticChar;
    static float staticFloat;
    static int* staticPointer;

    printf("Static int: %d\n", staticInt);
    printf("Static char: %c\n", staticChar);
    printf("Static float: %.2f\n", staticFloat);
    printf("Static pointer: %p\n", staticPointer);
}

int main() {
    testFunction();
    return 0;
}
输出结果:
Static int: 0
Static char:
Static float: 0.00
Static pointer: (nil)

在上面的示例中,testFunction函数中声明了几个静态变量,并通过printf函数打印它们的值。由于这些变量没有显式初始化,它们的值将是默认值。

  • staticInt:默认为0。
  • staticChar:默认为空字符。
  • staticFloat:默认为0.00。
  • staticPointer:默认为空指针。

需要注意的是,静态变量只会在第一次调用函数时初始化,之后的函数调用中,它们的值会保持上一次调用的结果。