本地变量
- 函数的每次运行,就产生了一个独立的变量空间,在这个空间中的变量,是函数的这次运行所独有的,称作本地变量
- 定义在函数内部的变量就是本地变量
- 参数也是本地变量
变量的生存期和作用域
-
生存期:什么时候这个变量开始出现了,到什么时候它消亡了
-
作用域:在(代码的)什么范围内可以访问这个变量(这个变量可以起作用)
-
对于本地变量,这两个问题的答案是统一的:大括号,大括号内叫做块
本地变量是定义在块内的
- 它可以是定义在函数的块内
- 也可以定义在语句的块内
- 甚至可以随便拉一对大括号来定义变量
- 程序运行进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了
- 块外面定义的变量在里面仍然有效
- 块里面定义了和外面同名的变量则掩盖了外面的。不能在一个块内定义同名的变量
- 本地变量不会被默认初始化
- 参数在进入函数的时候被初始化了
数组 - 格式 <类型>变量名称[元素数量]
如:double weight[20]
元素数量必须是整数
- 是一种容器(放东西的东西)
- 特点︰其中所有的元素具有相同的数据类型
- 一旦创建,不能改变大小
- *(数组中的元素在内存中是连续依次排列的)
数组的单元
- 数组的每个单元就是数组类型的一个变量
- 使用数组时放在[]中的数字叫做下标或索引,下标从0开始计数
- 如:grades[0]
有效的下标范围
- 编译器和运行环境都不会检查数组下标是否越界,无论是对数组单元做读还是写
- 一旦程序运行,越界的数组访问可能造成问题,导致程序崩溃
数组步骤
数组的集成初始化
int a[] = {2,4,6,7,1,3,5,9,11,13,23,14,32};
- 直接用大括号给出数组的所有元素的初始值
- 不需要给出数组的大小,编译器替你数数
集成初始化时的定位
- 用[n]在初始化数据中给出定位
- 没有定位的数据接在前面的位置后面
- 其他位置的值补零
- 可以不给出数组大小,让编译器算
- 特别适合初始数据稀疏的数组