0
点赞
收藏
分享

微信扫一扫

Linux命令-chfn命令(用来改变finger命令显示的信息)

晒大太阳了 2024-02-24 阅读 11

作用域的临时掩盖

如果有多个不同的作用域相互嵌套,那么小范围的作用域会临时 “遮蔽” 大范围的作用域中的同名标识符,被 “遮蔽” 的标识符不会消失,只是临时失去可见性。

  • 示例代码:
int a = 100;

// 函数代码块1
int main(void)
{
    printf("%d\n", a); // 输出100
    int a = 200;
    printf("%d\n", a); // 输出200
   
    // 代码块2 
    {
        printf("%d\n", a); // 输出200
        int a = 300;
        printf("%d\n", a); // 输出300
    }
    printf("%d\n", a); // 输出200
}

void f()
{
    printf("%d\n", a); // 输出100
}

static关键字

C语言的一大特色,是相同的关键字,在不同的场合下,具有不同的含义。static关键字在C语言中有两个不同的作用:

  1. 将可见范围设定为标识符所在的文件:
    • 修饰全局变量:使得全局变量由原来的跨文件可见,变成仅限于本文件可见。
    • 修饰普通函数:使得函数由原来的跨文件可见,变成仅限于本文件可见。
  2. 将存储区域设定为数据段:
    • 修饰局部变量:使得局部变量由原来存储在栈内存,变成存储在数据段。
  • 示例:
       int a; // 普通全局变量,跨文件可见
static int b; // 静态全局变量,仅限本文件可见

void f1()        // 普通函数,跨文件可见
{}

static void f2() // 静态函数,仅限本文件可见
{}

int main()
{
           int c; // 普通局部变量,存储于栈内存
    static int d; // 静态局部变量,存储于数据段
}
举报

相关推荐

0 条评论