C语言内部静态变量与外部静态变量的区别

C语言内部静态变量与外部静态变量的区别

静态变量可能是内部的或外部的,具体取决于声明的位置。静态变量存储在初始化的数据段中。

内部静态变量: 内部静态变量定义为具有静态变量的变量,这些变量在函数内部声明并延伸到特定函数的末尾。

语法:

main( ) 
{
  static datatype variable;
  // other statements
}

示例:

// C program to demonstrate
// Internal Static Variables

#include <stdio.h>

int value();

int main()
{
    printf("%d", value());
    return 0;
}

int value()
{
    static int a = 5;
    return a;
}

输出结果:

5

外部静态变量:外部静态变量是在函数外部声明并为整个文件/程序全局设置的变量。

语法:

static datatype variable;

main()
{
  statements
}

function1()
{
  statements
}

示例:

// C program to demonstrate
// External Static Variables

#include <stdio.h>

int add(int, int);

static int a = 5;

int main()
{
    int c;
    printf("%d", add(a, c));
}

int add(int c, int b)
{
    b = 5;
    c = a + b;
    return c;
}

运行结果:

10

内部静态变量和外部静态变量的区别:

参数 内部静态变量 外部静态变量
关键字 static static
链接 内部静态变量没有链接。 外部静态变量具有内部链接。
声明 内部静态变量在主函数中声明 外部静态变量在主函数之上声明。
比较 内部静态变量类似于自动(局部)变量。 外部静态变量类似于全局(外部)变量。
可见性 内部静态变量在特定函数中是活动的(可见性)。 外部静态变量在整个程序中都是活动的(可见性)。
Lifetime 内部静态变量在函数结束前是活动的(lifetime)。 外部静态变量在整个程序中都是活动的(生命周期)。
范围 内部静态变量具有块范围的持久存储(仅在特定块或函数内工作)。 外部静态变量具有文件范围的永久存储(在整个程序中工作)。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程