变量可以理解为是一块内存的名字。通过名字可以获取、改变里面存储的值。由于值是变化的,所以称为变量。
1、变量名
变量名不能随意起。变量名只能由字母(包括大写和小写)、数字和下划线( _ )组成,而且数字不能放在最前边。还有变量名的长度在不同的系统中有不同的限制,不能超过限度(长度问题不必考虑,我们一般不会超过)。要注意C语言是区分大小写的,比如MyName和myName计算机会看成是两个变量。在C语言中有许多专门含义 ( 比如 int、double ) 这样的词,还有代表命令 ( 比
如 return、include ) 等,它们都是系统专用的,我们就不能用作变量名了。另外,两个下划线开头的变量名,以及一个下划线 + 大写英文字母开头的变量名,都是系统内码中使用的,我们也不能起这样的变量名。至于起什么样的变量名合适时间长了会悟出来的。另外现在计算机编辑器都有检查功能,如刚使用了一个新变量名后马上就出现报错的地方,大概率和变量名有关,改了就是。
2、变量的声明
在C语言中,变量是要先声明再使用;否则,未经声明直接使用系统会报错。
声明变量的方式:
单个变量的声明:int myCount; // 声明一个int类型的名为myCount的变量
几个变量的声明:int a1,a2,a3; // 声明三个用逗号隔开的int型变量a1,a2,a3(当然一个一个声明也无不可)
所谓声明变量,就是在内存中为变量分配一块与大小与类型要求一致的内存空间。这里先简单介绍几个常用变量类型:
int 整数类型
float 浮点类型(小数类型)
char 字符类型
double 双精度浮点类型
3、变量赋值
变量声明后,我们可以为其赋值,形式:变量=值;例如前面声明的myCount如果要为其赋值100,可以:myCount=100;
变量赋值可以与声明放在一起进行,大多数情况都是这样做的。如:int x=1; 再如:int a1=1,a2=2,a3=3;
C 语言有左值和右值的概念。左值是可以放在赋值运算符左边的值,一般是变量;右值是可以放在赋值运算符右边的值,一般是一个具体的值。编程过程中报错经常会提到这两个概念。
4、变量的作用域
作用域是指变量生效的范围,也就是在哪个范围内可以使用这个变量。C语言变量一般分两种,一种是文件作用域,另一种是块作用域。
文件作用域:在源码顶层声明的变量,一般是紧跟在包含头文件语句后声明(不能放到main函数中)。这种声明从声明位置起一直到文件结束都有效,这种变量我们往往称为全局变量。
块作用域:块就是语句块,就是用一对"{ }"括起来的语句范围。凡在这个块里声明的变量,只能在这个块内使用,出了块就看不到了,可以理解成出了块,这个变量就被操作系统收回销毁了。如果一个大块里还套着小块,那么小块里是可以使用大块里的变量的。
关于语句块,有些特殊情况虽没有一对"{ }",但也构成一个语句块,可以理解为省略了大括号。举个例子:
int i = 1000;
for (int i = 0; i < 10; i++) { printf("i=%d\n",i); } //输出结果:输出i=0 i=1 。。。i=9
printf("i=%d\n",i); //输出结果:i=1000
从上面的例子看,第一个语句我们声明了i并赋值1000,在for循环的括号里又声明了i=0,首先相同变量重复声明时会报错的,其次i在for循环里被重新复赋值了,但第三句输出的结果仍是1000.这是为什么呢?原因就是for循环这个语句本身就构成语句块,而大括号被省略了。这也提醒我们,当大括号可加可不加时,为了逻辑清楚不妨加上。
还是说上面的例句,如果for循环的括号里i不重新声明,直接使用可以吗?回答可以。可以理解成是"{ }"中套着的"{ }",当然最后输出的值也不再是1000,因为在for循环里i又进行了多次赋值。
关于变量的内容先学习这么多,祝大家共同进步!