美文网首页
局部变量和全局变量

局部变量和全局变量

作者: 远方的路_ | 来源:发表于2018-09-21 00:33 被阅读0次

什么是局部变量?

在Go语言和C语言中写在{}中或者函数中或者函数的形参, 就是局部变量

什么是全局变量?

在Go语言和C语言中写在函数外面的就是全局变量

局部变量和全局变量的作用域

  • 在C语言中局部变量的作用域是从定义的那一行开始, 直到遇到}结束或者遇到return为止
    Go语言中局部变量的作用域和C语言一样
  • 在C语言中全局变量的作用域是从定义的那一行开始, 直到文件末尾为止
    Go语言中的全局变量, 只要定义了, 在定义之前和定义之后都可以使用

局部变量和全局变量的生命周期

  • 在Go语言和C语言中局部变量, 只有执行了才会分配存储空间, 只要离开作用域就会自动释放, 其局部变量存储在栈区

  • 在Go语言和C语言中的全局变量, 只要程序一启动就会分配存储空间, 只有程序关闭才会释放存储空间, 其全局变量存储在静态区(数据区)

局部变量和全局变量的注意点

  • 在Go语言和C语言中在相同的作用域内, 不能出现同名的局部变量
  • 在C语言中相同的作用域内, 可以出现同名的全局变量
    在Go语言中相同的作用域内, 不能出现同名的全局变量

特殊点

  1. 在C语言中局部变量没有初始化存储的是垃圾数据, 在Go语言中局部变量没有初始化, 会默认初始化为0
  2. 在C语言中全局变量没有初始化存储的是0, Go语言和C语言一样
  3. 在Go语言中, 如果定义了一个局部变量, 但是没有使用这个局部变量, 编译会报错
  4. 在Go语言中, 如果定义了一个全局变量, 但是没有使用这个全局变量, 编译不会报错

总结注意点:

1.相同的作用域内, 无论是全局变量还是局部变量, 都不能出现同名的变量
2.变量离开作用域就不能使用
3.局部变量如果没有使用, 编译会报错, 全局变量如果没有使用, 编译不会报错
4.(:=)只能用于局部变量, 不能用于全局变量
5.(:=)如果用于同时定义多个变量, 会有退化赋值现象

var num int
num, value := 456, 789
     // 1. var value int
     // 2. num = 456
     // 3. value = 789

如果通过:=定义多个变量, 但是多个变量中有的变量已经在前面定义过了, 那么只会对没有定义过的变量执行:=, 而定义过的变量只执行=操作

相关文章

  • python

    函数内全局变量赋值 Python中有局部变量和全局变量,当局部变量名字和全局变量名字重复时,局部变量会覆盖掉全局变...

  • Swift-全局变量、局部变量以及类型属性

    全局变量和局部变量 全局变量和局部变量 计算属性和属性观察器所描述的功能也可以用于全局变量和局部变量。全局变量是在...

  • C语言特性(局部变量和全局变量)

    局部变量和全局变量 局部变量 局部变量根据定义形式的不同,又分为如下三种。 全局变量 在一个函数内部,如果全局变量...

  • 15 C变量的作用域

    1、局部变量和全局变量

  • 9道常见C语言面试题

    1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量...

  • python基础

    1.局部变量、全局变量 在函数内部修改全局变量时局部变量会创建一个和全局变量一样名称的局部变量,在更改的时候只会更...

  • 第10天C语言(00):笔记总结

    01-全局变量和局部变量-基本概念 02-内部全局变量和外部全局变量 03-static对局部变量-作用 04-s...

  • Python基础教程——全局变量和局部变量的应用

    前言 学编程的总离不开全局变量和局部变量,那么,首先我们要知道局部变量和全局变量的定义: 局部变量:定义在函数内部...

  • C/C++知识点分享(16)

    1、statac全局变量、局部变量、函数与普通全局变量、局部变量、函数,static全局变量与普通的全局变量有什么...

  • C的自我修养

    关于全局变量、局部变量和static 变量有全局变量、局部变量之分。全局变量的作用域是从声明的那一行开始,默认是可...

网友评论

      本文标题:局部变量和全局变量

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