2.4 声明
所有变量都必须先声明后再使用,尽管某些变量可以通过上下文隐式地声明
一个声明指定一种变量类型,后面所带的变量表可以包含一个或多个该类型的变量,如:
int lower, upper, step;
char c, 1ine[1000];
一个声明语句中的多个变量可以拆开在多个声明语句中声明
上面的两个声明语句也可以等价地写成下列形式:
int lower;
int upper;
int step;
char c;
cbar line[1000];
按照这种形式书写代码需要占用较多的空间,但便于向各声明语句中添加注释,也便于以后修改
还可以在声明的同时对变量进行初始化
在声明中,如果变量名的后面紧跟一个等号以及一个表达式,该表达式就充当对变量进行初始化的初始化表达式,如:
char esc = '\\';
int i = 0;
int limit = MAXLINE + 1;
float eps = 1.0e-5;
如果变量不是自动变量,则只能进行一次初始化操作
从概念上讲,应该是在程序开始执行之前进行,并且初始化表达式必须为常量表达式
每次进入函数或程序块时,显式初始化的自动变量都将被初始化一次,其初始化表达式可以是任何表达式
未经显式初始化的自动变量的值为未定义值(即无效值)
自动变量
在定义的地方被创建(分配内存空间),在定义它们的函数返回时,系统将自动回收其占用的空间
一般情况下,不作专门说明的局部变量均是自动变量,自动变量也可用关键字auto
进行显式地声明
块语句中定义的变量以及函数的形式参数都是自动变量
默认情况下,外部变量与静态变量将被初始化为 0
任何变量的声明都可以使用 const
限定符限定,该限定符指定变量的值不能被修改
对数组而言,const
限定符指定数组所有元素的值都不能被修改:
const double e = 2.71828182845905;
const char msg[] = "warning: ";
const
限定符也可配合数组参数使用,它表明函数不能修改数组元素的值:
int strlen(const char[]);
如果试图修改 const
限定符限定的值,其结果取决于具体的实现