标识符作用域的规定

标识符的作用域指的是程序中能够访问到这个标识符的区域。c语言有四种不同的函数标识符作用域:函数作用域(function scope)、文件作用域(file scope)、程序块作用域(block scope)和函数原型作用域(function-prototype scope)。

函数作用域

标号(label,即后面跟着一个冒号的标识符,如start:)是唯一具有函数作用域的标识符,标号可以在定义它的函数中任何位置中被访问到,但是在定义它的函数之外就访问不到了。一般应用于switch语句和goto语句。

文件作用域

所有函数之外定义的标识符具有文件作用域,这样的标识符从声明它们的语句开始到整个程序结束的区间内,能被所有的函数访问。全局变量,函数定义和位于函数之外的函数原型都具有文件作用域。

程序块作用域

在一个程序块内部定义的标识符具有程序块作用域,结束于表示程序块结束的右花括号。在函数开始时定义的局部变量以及函数的形参具有函数块作用域,因为形参也被函数视为局部变量。任何程序块都可以定义变量。对于嵌套出现的程序块,如果外层程序块和内层程序块中的一个标识符具有相同的名字,那么在执行内部程序块过程中,外层程序块的标识符将一直被隐藏起来,直到内层程序块结束为止。
若将函数原型放在其余函数体内,则只能在该函数中调用它,如:

#include <stdio.h>
void foo();
void foo() {
    void boo();
    printf("This is foo!\n");
    boo();
}
void boo() {
    printf("This is boo!\n");
}

则只能在foo函数中调用boo函数。

函数原型作用域

函数原型中形参列表中代表形参名的那些标识符是唯一具有函数原型作用域的标识符。这些形参的名字不是必须的,会在编译时忽略掉形参列表中出现的标识符这些标识符可以在程序的其他地方用到而不引起混乱。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值