C语言区块范围

示例

如果标识符的相应声明出现在块内(具有函数定义中的参数声明),则标识符具有块作用域。范围结束于相应块的末尾。

具有相同标识符的不同实体不能具有相同的范围,但是范围可以重叠。在范围重叠的情况下,唯一可见的范围是在最内部范围中声明的范围。

#include <stdio.h>

void test(int bar)                   // 条具有范围测试功能块
{
    int foo = 5;                     // foo具有范围测试功能块
    {
        int bar = 10;                // bar具有作用域内部块,与先前的test:bar声明重叠,并且隐藏了test:bar
        printf("%d %d\n", foo, bar); // 5 10
    }                                // 内杆范围的末端
    printf("%d %d\n", foo, bar);     // 5 5,这里的bar是test:bar
}                                    // test:foo和test:bar范围的结尾

int main(void)
{
    int foo = 3;         // foo具有作用域主要功能块

    printf("%d\n", foo); // 3
    test(5);
    printf("%d\n", foo); // 3
    return 0;
}                        // main:foo范围的结尾