美文网首页
C-作用域规则

C-作用域规则

作者: 小石头呢 | 来源:发表于2019-08-01 12:22 被阅读0次

C语言中有三个地方可以声明变量:

  • 在函数或者代码块内部的局部变量
  • 在所有函数外部的全局变量
  • 在形式参数的函数参数定义中

一.局部变量

在某个函数或代码块的内部声明的变量称为局部变量。它们只能被该函数或该代码块内部的语句使用。局部变量在函数外部是不可知的。

二.全局变量

全局变量是定义在函数外部,通常是在程序的顶部。全局变量在整个程序生命周期内都是有效的,在任意的函数内部能访问全局变量。

在程序中,局部变量和全局变量的名称可以相同,但是在函数内,如果两个名字相同,会使用局部变量值,全局变量不会被使用。

三.形式参数

函数的参数,形式参数,被当作该函数内的局部变量,如果与全局变量同名它们会优先使用。

四.全局变量与局部变量在内存中的区别:

  • 全局变量保存在内存的全局存储区中,占用静态的存储单元

  • 局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元

五.初始化局部变量和全局变量

当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。定义全局变量时,系统会自动对其初始化,如下所示

正确地初始化变量是一个良好的编程习惯,否则有时候程序可能会产生意想不到的结果,因为未初始化的变量会导致一些在内存位置中已经可用的垃圾值

六.形参和实参的区别

在函数使用中:

  • 形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。

  • 实参出现在主调函数中,进入被调函数后,实参变量也不能使用。

在调用过程中:

  • 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。

  • 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。

例子

当形参和实参不是指针类型时(也没有引用关系),在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。

相关文章

  • C-作用域规则

    C语言中有三个地方可以声明变量: 在函数或者代码块内部的局部变量 在所有函数外部的全局变量 在形式参数的函数参数定...

  • 一周一章前端书·第2周:《你不知道的JavaScript(上)》

    第2章:词法作用域 第一章提到,所谓作用域就是JavaScript变量的存取规则。 而众多编程语言的作用域规则中,...

  • 浅谈JS作用域链

    浅谈JS作用域链 作用域 作用域(scope)就是变量访问规则的有效范围。作用域外,无法引用作用域内的变量;离开作...

  • JS作用域理解

    什么是作用域(执行环境)? 作用域可以看成是一种规则,这种规则定义了变量是如何存储以及如何访问的。作用域也可以称为...

  • 4. 作用域链与闭包

    作用域 在JavaScript中,我们可以将作用域定义为一套规则,这套规则用来管理引擎如何在当前作用域以及嵌套的子...

  • 关于作用域和作用域链

    作用域 在JavaScript中,我们可以将作用域定义为一套规则,这套规则用来管理引擎如何在当前作用域以及嵌套的子...

  • 2019-04-08

    作用域链与闭包 作用域 在JavaScript中,我们可以将作用域定义为一套规则,这套规则用来管理引擎如何在当前作...

  • 作用域和闭包

    一、理解 JavaScript 的作用域、作用域链和内部原理 作用域 javascript 拥有一套设计良好的规则...

  • 作用域

    什么是作用域 作用域就是一套规则,用于确定在何处以及如何查找变量(标识符)的规则。通俗的讲,作用域就是查找变量的地...

  • javascript 作用域解析

    什么是作用域呢   作用域其实是一套规则,这套规则用来管理引擎如何在当前作用域以及嵌套的子作用域中根据标识符名称进...

网友评论

      本文标题:C-作用域规则

      本文链接:https://www.haomeiwen.com/subject/cddqdctx.html