鱼C论坛

 找回密码
 立即注册
查看: 2263|回复: 0

[技术交流] S1E31局部变量和全局变量笔记

[复制链接]
发表于 2017-8-19 22:45:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Kotori 于 2017-8-19 22:44 编辑

局部变量和全局变量
        不同函数间的变量是无法相互访问的,但有些时候往往有这个需要。因此按作用域,可把变量分为局部变量和全局变量。作用域可以理解为变量的有效范围。
  1>局部变量
        在函数中定义的变量为局部变量,这类变量的作用域只在函数内部,出了函数就无法对变量进行操作。
        定义在for循环中的循环变量也只作用在该循环中。下方代码中的i就是一个例子。
  1. for (i=0;i<10;i++)
  2. {
  3.         a[i] = i+1;
  4. }
复制代码

  2>全局变量
        全局变量,定义在函数的外部,也称为外部变量。全局变量对同文件中的所有函数可见。这些函数可以访问和修改全局变量。
        全局变量定义时未初始化的,会自动初始化为0。
        C语言在C90之后支持在代码中定义变量。若在未定义的变量前先使用这个变量,可使用extern关键字进行修饰。
  3>屏蔽模式
        在函数代码中定义一个和全局变量相同名字的变量,则在函数中使用的是函数中定义的局部变量。虽然两个变量名字相同,但实际上存在于内存中两个不同的位置。这时就是函数中的局部变量屏蔽了全局变量。上方的for循环也是屏蔽的一种。
  1. int a = 1;        //a是定义的一个全局变量
  2. int calc()
  3. {
  4.         int a =3;
  5.         printf("%d",a);                //程序输出的是3,在函数中局部变量屏蔽了全局变量
  6. }
复制代码

  4>全局变量的不足
        虽然全局变量方便了数据在不同函数之间的传递,但是切记不要大量使用全局变量!
        1)过多的全局变量会占用较多的资源,因为全局变量不会在函数结束后与局部变量一起被释放;
        2)污染命名空间,对函数内命名变量带来困难;
        3)提高了程序的耦合性,不便于程序的模块化设计与修改。

评分

参与人数 1鱼币 +4 收起 理由
小甲鱼 + 4

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-3 19:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表