即便作为非计算机专业的人士,也应该认真学习一下编程思想,这可以让我们有更多的视角去看世界。
这个学期老高担任了一门C语言的课程,这是我第三次给学生上C语言课。老高决定,把教学过程中的一些基本的概念总结记录下来,这是01篇“变量”。很多时候,我可能会写得比较匆忙,难免肤浅和疏漏,希望看客们海涵。
“世界是变化的,唯有变化本身是永恒的”。没有什么东西是一成不变的,计算机语言的“变量”最深刻地体现了这一真理。
变量这个概念来源于数学。在数学中,变量表示尚未清楚的值(即变数),或一个可代入的值(见函数)。比如,我们小的时候做应用题,我们求解的时候列方程,经常假设某个量为x。
而在计算机中,变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储程序(脚本)运行时可更改的程序信息。
我们如果把这个概念抽象出来,那么变量的实质是什么?举个例子,一个人一生中可能只用一个名字,但是他每天都在发生着变化,但是无论怎么变化他还是他,不会变成别人。仔细想一想,“变量”这个概念在现实生活中是处处存在。它实质上是一个时刻都可能会改变的东西的代称,而这个变化又有一定的范围,使得无论它怎么变,它还是它。
可以把计算机的内存想象成下图的快递柜,有很多格子、每个格子都有编号。我们定义一个计算机变量就好像向快递柜申请一个格子用来存放东西,这个格子的大小呢是根据我们变量的类型(就是想要存放的物品的可能尺寸)来分配的。而在申请一个格子的时候,里面可能会存在一些东西,当我们放新的东西的进去的时候就会把原来的东西给挤走(更准确说是覆盖,旧的东西找不回来了)。如果我们想让这个格子里的内容参与运算的时候,我们只需要告诉运算的指令这个格子的名称(即变量的名称)即可。
当然,这又会牵涉出很多其它问题,我会在后续的文章中陆续说明。
现实中的变化比计算机变量的变化要复杂的多,但所有的变化有一定的范围区间。我们在日常工作、学习、生活、与人交往等等,时刻要记住这一条,所有的事情都会变化的,同时所有的变化都会被或大或小的框框限制起来。
在C语言中变量的类型大致如下图所示。
上图只是C语言中的基本类型。除此之外,还有构造类型(数组、结构体、共用体)、指针类型等。其它的计算机语言的变量类型也大致如此,现在高级语言大多会比C语言的变量类型更丰富、灵活,但万变不离其宗。
我们定义一个变量,它有一定的作用域,所谓“作用域”就是这个变量的有效范围。就像一个人,总是在一定的区域内被人熟悉。
作用域可以在一定程度上解决变量重名的问题。就好比说全中国有好多人叫“张伟”,但是我们一旦限定说是《爱情公寓》里的张伟,我们就会想到的是张益达,不是别人。变量的作用域也有类似作用。
关于对“变量”的理解就说到这里,后续随着课程的进展会不定期更新别的内容。