c语言中,一些全局变量和局部变量的定义及区别

我知道!字很多,但一定要耐下心来仔细看!因为!全程无废话,讲解全局,局部变量和形、实参的区别!

1.全局变量和局部变量

(1)全局变量

①定义:主函数中定义的变量只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效。主函数也不能使用其他函数中定义的变量。

②注意事项:

  • 全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元。
  • 使用全局变量过多会降低程序的清晰性。在各个函数执行时都可能改变外部变量的值,程序容易出错,因此要有限制地使用全局变量(初试时尽量不用).
  • 因为函数在执行时依赖于其所在的外部变量,如果将一个函数移到另一个文件中,那么还要将有关的外部变量及其值一起移过去。然而,如果该外部变量与其他文件的变量同名,那么就会出现问题,即会降低程序的可靠性和通用性.C语言一般要求把程序中的函数做成一个封闭体,除可以通过“实参→形参”的渠道与外界发生联系外,没有其他渠道.所以不建议使用全局变量。

 (2)局部变量

①定义:在一个函数内部定义的变量称为局部变量.它只在本函数范围内有效,即只有在本函数内才能使用这些变量,故称局部变量。

②注意事项:

  • 主函数中定义的变量只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效。主函数也不能使用其他函数中定义的变量。
  • 不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。
  • 形式参数也是局部变量。
  • 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称“分程序”或“程序块”.例1.1中的 int j=5就是如此,只在离自己最近的花括号内有效,若离开花括号,则在其下面使用该变量会造成编译不通.
  • 注意一个细节, for循环的小括号内定义的int i,在离开for循环后,是不可以再次使用的.

(3)整体分析

全局变量存储在数据段,所以main函数和 其他函数都是可见的.全局变量不会因为某个函数执行结束而消失,在整个进程的执行过程中始终有效,因此工作中应尽量避免使用全局变量!我们在函数内定义的变量都称为局部变量,局部变量存储在自己的函数对应的栈空间内,函数执行结束后,函数内的局部变量所分配的空间得到释放.如果局部变量与全局变量重名,那么将采取就近原则,即实际获取和修改的值是局部变量的值.

2.形参和实参:

(1)定义函数中指定的形参,如果没有函数调用,那么它们并不占用内存中的存储单元。只有在发生函数调用时,函数中的形参才被分配内存单元.在调用结束后,形参所占的内存单元也释放.
(2)实参可以是常量、变量或表达式,但要求它们有确定的值,例如, print(i+3)在调用时将实参的值 i+3赋给形参。print函数可以有两个形参,如print(int a,int b)
(3)在被定义的函数中,必须指定形参的类型。如果实参列表中包含多个实参,那么各参数间用逗号隔开。实参与形参的个数应相等,类型应匹配,且实参与形参应按顺序对应。
(4)实参与形参的类型应相同或赋值应兼容.
(5)实参向形参的数据传递是单向“值传递”,只能由实参传给形参,而不能由形参传回给实参.在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。
(6)形参相当于局部变量,因此不能再定义局部变量与形参同名,否则会造成编译不通。


结束~

相关推荐

  1. c语言一些全局变量局部变量定义区别

    2024-04-12 18:34:01       15 阅读
  2. C++ 局部变量全局变量

    2024-04-12 18:34:01       43 阅读
  3. c语言局部变量作用域是?

    2024-04-12 18:34:01       10 阅读
  4. C 语言常量变量区别

    2024-04-12 18:34:01       21 阅读
  5. 数据类型局部/全局变量

    2024-04-12 18:34:01       29 阅读
  6. C语言extern:全局变量函数声明与使用

    2024-04-12 18:34:01       37 阅读
  7. C语言变量全局变量能否重名?

    2024-04-12 18:34:01       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-12 18:34:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-12 18:34:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-12 18:34:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-12 18:34:01       20 阅读

热门阅读

  1. 自动糊测试原理,怎么理解?【UI自动化】

    2024-04-12 18:34:01       17 阅读
  2. Vue3---基础4(响应式数据) Vue2

    2024-04-12 18:34:01       15 阅读
  3. 杨扬小朋友求职

    2024-04-12 18:34:01       15 阅读
  4. 100美元如何做安全防御?

    2024-04-12 18:34:01       14 阅读
  5. MyBatis 执行流程

    2024-04-12 18:34:01       21 阅读
  6. C++中不同变量(内置/类 类型) 的初始化规则

    2024-04-12 18:34:01       18 阅读
  7. @NotEmpty、@NotBlank、@NotNull三种注解的区别

    2024-04-12 18:34:01       16 阅读
  8. 类 对象 对象实例

    2024-04-12 18:34:01       14 阅读
  9. vue中watch监听路由传来的参数变化问题

    2024-04-12 18:34:01       12 阅读
  10. Windows下如何确定虚函数在虚函数表中的位置

    2024-04-12 18:34:01       16 阅读