高级C语言教程-作用域

来源:互联网 发布:淘宝奥巴狗游戏 编辑:程序博客网 时间:2024/05/22 13:10

C语言中一共有4中作用域:代码块作用域、文件作用域、函数作用域和原型作用域。
1.代码块的作用域,位域一对大括号中的所有语句构成一个代码块(Block)任何在代码块开始声明的标识符都具有代码块作用域,函数定义的形参在函数内部也具有代码块的作用域。
在函数后面声明一个新的代码块可以再次进行变量的声明而不会报错。

#include <setjmp.h>#include <stdio.h>jmp_buf j;void raise_exception(void){    printf("exception raised\n");    longjmp(j, 3); /* jump to exception handler case 3 */    printf("this line should never appear\n");}int main(void){    switch (setjmp(j))    {        case 0:            printf("''setjmp'' is initializing ''j''\n");            raise_exception();            printf("this line should never appear\n");        case 1:            printf("Case 1\n");break;        case 2:            printf("Case 2\n");break;        case 3:            printf("Case 3\n");break;        default:            break;    }    {        int i =3;        printf("i = %d\n",i);    }    return 0;}

输出:

/home/andrew/文档/IMPORTENT_C/cmake-build-debug/IMPORTENT_C''setjmp'' is initializing ''j''exception raisedCase 3i = 3Process finished with exit code 0

文件作用域
任何在所有代码块之外声明的标识符(也就是这个标识符不属于任何代码块)都具有文件作用域(File Scope)。它表示这些标识符在整个声明这些标识符的文件中都可以被访问。
注意:在文件中定义的函数名也具有文件作用域,因为函数本身不属于任何代码块。

函数作用域
函数作用域不但决定了可以在程序的什么位置调用函数,而且决定了函数可以访问那些定义,适用于变量标识符的作用域规则也同样适用于函数标识符。在全局作用域中声明的函数在整个代码中都可以使用。

原型作用域
C语言程序中,函数的应用分为函数定义和函数服务(调用)两部分。文件的定义通常在文件的作用域。

原创粉丝点击