变量
变量(variable)可以理解成一块内存区域的名字。通过变量名,可以引用这块内存区域,获取里面存储的值。由于值可能发生变化,所以称为变量,否则就是常量了。
变量名
变量名在 C 语言里面属于标识符(identifier),命名有严格的规范。
- 只能由字母(包括大写和小写)、数字和下划线(_)组成。
- 不能以数字开头。
- 长度不能超过63个字符。
注意,变量名区分大小写 TEST、Test、tests是三个不同的变量名
在C语言中,并非所有的此都能用作变量名,有些词在C语言中有特殊的含义,如我们已经学过的int,这种有特殊含义的词语被称作关键字。另外,C 语言还保留了一些词,供未来使用,这些保留字也不能用作变量名。下面就是 C 语言主要的关键字和保留字。
auto, break, case, char, const, continue, default, do, double, else, enum, extern,
float, for, goto, if, inline, int, long, register, restrict, return, short, signed,
sizeof, static, struct, switch, typedef,union, unsigned, void, volatile, while
变量的声明
C 语言的变量,必须先声明后使用。
如果一个变量没有声明,就直接使用,会报错。每个变量都有自己的类型(type)。
int a;
上面顶代码生命力变量a,并且指定类型为int
如果有几个变量可以在同一行声明
int a,b;
//等同于
int a;
int b;
注意,声明变量的语句必须以分号结尾。
变量的赋值
C 语言会在变量声明时,就为它分配内存空间,但是不会清除内存里面原来的值。这导致声明变量以后,变量会是一个随机的值。所以,变量一定要赋值以后才能使用。
一定一定一定要记得赋值,如果不赋值进行计算,可能在运行结果中出现十分离谱的现象
赋值操作通过赋值运算符 = 进行
在C语言中一定要注意 == 和 = 的区别,其中=是本段所讲的赋值运算符,意思是把右边的值赋给左侧的变量。但是 = =的意思是判断作用两边的值是否相等!
int num;
num=10086;
上面的示例中,第一行声明了一个整数变量num,第二行给这个变量进行赋值。
变量的值应该与声明变量的类型保持一致,本例中变量声明的是整型,就应该赋值为整数。
C 语言有左值(left value)和右值(right value)的概念。左值是可以放在赋值运算符左边的值,一般是变量;右值是可以放在赋值运算符右边的值,一般是一个具体的值。这是为了强调有些值不能放在赋值运算符的左边,比如x = 1是合法的表达式,但是1 = x就会报错。
变量的作用域
作用域(scope)指的是变量生效的范围。C 语言的变量作用域主要有两种:全局变量和局部变量。
全局变量指的是,在源码文件顶层声明的变量,从声明的位置到文件结束都有效。
局部变量指的是由大括号({})组成的代码块,它形成一个单独的作用域。凡是在块作用域里面声明的变量,只在当前代码块有效,代码块外部不可见。
代码块可以嵌套,即代码块内部还有代码块,这时就形成了多层的块作用域。它的规则是:内层代码块可以使用外层声明的变量,但外层不可以使用内层声明的变量。如果局部变量与全局同名,那么会在当前作用使用局部变量,忽略全局变量。