C语言函数的作用域规则

C语言函数的作用域规则,第1张

C语言函数的作用域规则,第2张

语言的作用域规则是一组规则,这些规则确定代码的一部分对于代码和数据的另一部分是否“可见”或可访问。
C语言中的每个函数都是一个独立的代码块。函数的代码块隐藏在函数内部,不能被任何其他函数中的任何语句访问(调用它的语句除外)(例如,不能用g o t o语句跳转到另一个函数内部)。构成函数体的代码对程序的其他部分是隐藏的,它既不会影响程序的其他部分,也不会被程序的其他部分影响。换句话说,因为两个函数的作用域不同,所以一个函数中定义的代码数据不能与另一个函数中定义的代码和数据进行交互。
C语言中的所有函数都在同一个作用域级别。也就是说,不可能在一个函数内部定义另一个函数。
4.2.1局部变量
函数内定义的变量成为局部变量。在一些C语言教材中,局部变量被称为自动变量,这与使用可选关键字a u t o定义局部变量的做法是一致的。局部变量只能由定义它们的模块中的语句访问。换句话说,局部变量在它们自己的代码模块之外是不可知的。记住:模块以左花括号
开始,以右花括号结束。
关于局部变量,最重要的一点要知道,局部变量只存在于已定义的当前执行代码块中,即局部变量在进入模块时生成,退出模块时消亡。
定义局部变量的最常见的代码块是函数。例如,考虑以下两个函数。

整数变量x定义了两次,一次在func1()中,一次在func2()中。func1()和func2()中的x互不相关。原因是每个x只在定义的块中被认为是局部变量。
该语言包含关键字auto,可用于定义局部变量。但是由于所有非全局变量的默认值都被假设为auto,所以很少使用auto,所以本书的所有例子中并没有找到这个关键字。
最常见的做法是在每个功能模块的开头定义所有必需的变量。这使得任何人都很容易阅读这个函数并知道所使用的变量。但是没有必要这样做,因为局部变量可以在任何模块中定义。要了解其工作原理,请查看以下函数。来源:www.examda.com

这里,局部变量S在if块的入口处建立,在其出口处消亡。因此,s只在if块中是已知的,而在其他地方是不可访问的,甚至在包含它的函数内部的其他部分也是如此。
在条件块中定义局部变量的主要优点是,仅在需要时才分配内存。这是因为只有当控制转移到定义局部变量的块时,局部变量才进入生存期。虽然这在大多数情况下不是很重要,但当代码用于特殊控制器(如识别数字安全代码的车库门控制器)时,它就变得非常重要,因为此时随机存取存储器(RAM)非常短。
因为局部变量是随着它们所定义的模块的导入和导出而建立或释放的,所以在块工作完成后,它们所存储的信息将会丢失。请记住,这对于访问相关功能尤其重要。当一个函数被访问时,它的局部变量被建立,当函数返回时,局部变量被销毁。也就是说,局部变量的值不能在两次调用之间保持。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C语言函数的作用域规则

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情