C 语言 - 作用域

  1. 作用域:程序中可以访问的一个标识符的一个或多个区域。
  2. 分类:
    a. 代码块作用域 block scope
    b. 函数原型作用域 function prototype scope
    c. 文件作用域 file scope
    d. 函数作用域 function scope
  3. 代码块作用域 block scope
    一个代码块是指包含在一对花括号之内的一段代码(可嵌套)。在代码块中定义的变量具有代码块作用域,变量从被定义处到包含该定义的代码块末尾均可见。
    1)整个函数体是一个代码块:
void swap(double &d1, double &d2) {
	double dtmp = d1;
	d1 = d2;
	d2 = dtmp;
}

a. dtmp 具有代码块作用域;
b. 函数的形参也具有代码块作用域,比如上面例子中的 d1d2
2)函数内任一复合语句是一个代码块:

void display(char c, int itimes) {
	for (int i = 0; i < itimes; ++i)
		printf("%c\n", c);
}

上面例子中 for 循环是一个代码块,变量 i 具有代码块作用域。
4. 函数原型作用域 function prototype scope
函数原型作用域适用于函数原型中使用的变量名。
a. 通常情况下,函数原型中只关心形参的类型,名字无关紧要甚至可以忽略;
b. 函数原型中名字起作用的一种情形是变长数组的参数:

void use_a_VLA(int irow, int icol, iarr[irow][icol]);
  1. 文件作用域 file scope
    一个定义在所有函数之外的变量具有文件作用域。该变量从挑定义处到包含该定义的文件的结尾处均可见。
    文件作用域变量即全局变量(global variable)。
  2. 函数作用域域 function scope
    注意区别于函数原型作用域。C 语言中的函数作用域只适用于 goto 语句使用的标签,一个函数中的 goto 标签在该函数中的任意地方可见,与标签出现的位置无关(区别于代码块作用域)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值