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

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

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

立 为 非 似

中 谁 昨 此

宵 风 夜 星

。 露 , 辰

文章点击榜

细 无 轻 自

如 边 似 在

愁 丝 梦 飞

。 雨 , 花