区分本地变量、全局变量以及静态本地变量

一、本地变量
定义:函数的每次运行,就产生了一个独立的变量空间,在这个空间中的变量,是函数的这次运行所独有的,称作本地变量;

  • 定义在函数内部的变量就是本地变量;
  • 参数也是本地变量。

1、变量的生存期和作用域

  • 生存期:从变量出现开始,到它消亡;(实际为占据和释放内存);
  • 作用域:在(代码内)什么范围内可以访问这个变量;
  • 本地变量的生存期和作用域都在块内;
    注:{ }所包含的代码区域,就称为块
    但是if( )语句括号里的i,在它后面的{ }里依然有效,可以把()里的看作整体的一个子块。

2、本地变量的规则
(1)本地变量就是定义在块内的;
(2)它可以定义在函数的块内;
(3)也可以定义在语句的块内;
(4)甚至可以随便拉一对大括号来定义;
(5)程序运行进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了;
(6)块外面定义的变量在里面仍有效;
(7)块里面定义了和外面同名的变量回掩盖外面的;
(8)不能再一个块内定义同名的变量;
(9)本地变量不会被默认初始化;
(10)参数在进入函数之前时就被初始化了;

二、全局变量
定义:定义在函数外面的变量就是全局变量;

1、生存期和作用域

  • 他们与任何函数都无关;
  • 在任何函数内部都可以使用他们;

2、全局变量初始化

  • 没有做初始化的全局变量会得到0值;(指针会得到NULL值)
  • 只能用编译时刻已知的值来初始化全局变量;
  • 它们初始化发生在main()函数之前;
  • 注意:如果函数内部存在与全局变量同名的变量,则全局变量被隐;

三、静态本地变量
定义:在本地变量定义时加上static修饰符就成了静态本地变量;

特性

  • 当函数离开时,静态本地变量会继续保持其值;
  • 静态本地变量的初始化只会在第一次进入这个函数时做,以后进入函数时会保持上次离开的值;
  • 静态本地变量具有全局的生存期,以及函数内部的局部作用域;

注意事项

  • 静态本地变量实际就是特殊的全局变量;
  • 它们位于相同的内存区域;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章