C++学习日记 1

来源:互联网 发布:华为云计算面试 编辑:程序博客网 时间:2024/05/14 06:56

日记文档下载地址:http://download.csdn.net/detail/u010170012/6831261


1、什么是变量?

电脑具有存储的功能。我们可以通过Word打开一个保存的文章,也可以通过FPE(整人专家,一款游戏修改软件)来查看或锁定内存中保存的游戏人物的生命值。那么,一个程序是如何把数据存到电脑里,又是如何把电脑里的数据取出来的呢?

在设计程序的时候,我们把要存储的数据放在一个叫变量(Variable)的东西里。他就好像是一个箱子,而数据就像是箱子里的物品。当然,在我们放东西和取东西之前必须要创建这么一个箱子,这条创建变量的语句又称为变量的声明(Declaration)。它的语句格式为:[,变量名 变量数据类型 变量名1,...变量名n];

2、变量的分类
1.根据作用域:可分为全局变量和局部变量。
2.根据生存周期:可分为静态存储方式和动态存储方式,具体地又分为自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。

静态存储方式是指在程序运行期间分配固定的存储空间的方式,动态存储方式是在程序运行期间根据需要进行动态的分配存储空间的方式。

3、变量的作用域和存储类别的关系
每一个变量均有作用域和存储类别两个属性,这些属性共同用于描述一个变量,这些不同类型的变量与存储位置的关系如下:
1.外部变量(全局变量)、静态外部变量、静态局部变量存储在静态存储区。
2.自动局部变量(局部变量默认为自动局部变量)、函数形参存储在动态存储区(即栈区)。
3.不论是静态存储区还是动态存储区均属于内存中的用户区。
4.而寄存器变量是存储在cpu寄存器中的而不是内存中。

4、与作用域相关的几个属性:
1.局部变量:在一个函数内部定义的变量时内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用他们,在此函数以外是不能使用这些变量的,这种类型的变量就称为“局部变量”。
2.全局变量:在函数外定义的变量,可以为本源文件中其它函数所公用,有效范围从定义变量的位置开始到本源文件结束,这种类型的变量就称为“全局变量”。

4、与存储类型相关的几个属性
1.auto:在声明局部变量时,若不指定static,默认均是auto,这类变量都是动态分配存储空间的,数据存储在动态存储区中。
2.static:在声明局部变量时,使用关键字static将局部变量指定为“静态局部变量”,这样在函数调用结束后不消失而保留原值,即占用的存储单元不释放,在下一次函数调用时,该变量已有值就是上次函数调用结束的值。
3.register:在声明动态局部变量或函数形参时,可将变量声明为register,这样编译系统就会为变量分配一个寄存器而不是内存空间,通过这种方式可提升对某些局部变量频繁调用的程序的性能。(寄存器运算速度远高于内存)
4.extern:用于扩展变量的作用域。
..1.比如如果函数想引用一个外部变量,但该外部变量在该函数后定义,那么这个函数需要使用extern来声明变量,这样才能使用在该函数后面定义的全局变量。

..2.此外,extern还可以在多文件的程序中声明外部变量。


我们刚才说了,变量就好像一个箱子。可是不同的东西也要放到对应的箱子里。如果把吃的东西放到文具盒里,把衣服放进饼干盒里,显然是不合适的。变量也是一样的。有些数据是文字(字符或字符串),有些数据是数字(整数或者实数),把它们随便乱放,那么电脑可能就无法理解这些数据的含义了。

我们常用的基本数据类型由下表列出:(以VC为例)

char a就是声明了一个字符变量。修饰符是放在分类型之前的,比如要创建一个短整型变量A,就应该是short int A;了。

要注意,两个数据类型截然不同的变量是不能放在同一个语句中定义的。比如企图通过int a,char b;声明整型变量a和字符型变量b是不可以的。

我们在选择数据类型是,要尽量选择满足使用要求的类型。比如我们要算一个一元二次方程的解,就应该选择精度较高的浮点型或者双精度型,而不能选一个整数型;同时,我们也要有“够用就行”的好习惯。如果我们创建一个双精度型的变量去存储从整数1到100的和,那就显得大材小用,太浪费了。一个变量所占内存(Memory)的空间是和这个变量的数据类型有关的。虽然现在电脑的内存已经可以达到很大,但是如果在设计大型软件是经常“大材小用”,即使有了更多的内存,也会捉襟见肘的。

---C++学习日记 2014.1.9 学习in微学苑~
0 0
原创粉丝点击