C课堂笔记day5
变量
- 假设有这样一个问题 计算2的10次方,我们首先想到的可能是:
1 |
|
我们称之为蛮力法。我们程序猿最怕的就是需求变更,我们这样写就给自己埋下了一个隐患,当需求不是要计算2的10次方的时候,就需要重新改动,需要消耗大量的时间。
虽然这种蛮力型的方案也能解决问题,但是他总让人感到不愉快,而且有些危机感。
复杂的技术方案一般在开始的阶段需要很多时间,这时常会感觉什么都没有做。而且处理过程是自动的,所以就更有可能出错。
事情不可避免会出错。但好处在于,这些错误过程中,不但事情很快就能完成,而且拓展了想象空间,有时候,这个过程也挺有趣的。
一个标准的程序员的思维超与常人。
- 在本例中,用来取代这种蛮力法的方案包括两部分内容:使用有名字的对象来读写每部的计算:引入一个控制流的结构,一遍在某个条件为真时,可以重复执行一系列的语句。下面是一种“技术先进的”计算2的10次幂的程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main(){
//int类型对象
int value = 2;
int pow = 10;
cout<<value<<"raised to the power of"<<pow<<":\t";
int res = 1;//保存结果
//循环控制语句:反复计算res
//直至cnt大于pow
for(int cnt=1;cnt<=pow;cnt++){
res = res * value;
}
cout<<res<<endl;
return 0;
}
重用
重用是程序员每个人心里最喜欢的
虽然这种层次的通用化能是程序更加灵活,但是这样的程序仍然是不可重用的。我们必须进一步通用化:把计算指数值的部分给抽离出来,定义成一个独立的函数,意识其他函数能够调用它。例如:
1
2我们也可以用如下的代码来生成2的幂的表:
1
2
3
4
5
6
7
8
9
10
int main(){
int val =2;
int exp = 15;
cout<<"The Powers of 2\n";
for(int cnt=0;cnt<exp;cnt++){
cout<<cnt<<":"<<pow(val,cnt)<<endl;
}
return 0;
}
什么是变量?
变量为我们提供了一个有名字的内存存储区,可以通过程序对其进行读写和处理。
C++中的每个符号变量都与一个特定的数据类型相关联,这个类型决定了相关内存的大小、布局、能否存储在改内存取的值得范围以及可以应用其上的操作集,我们也可以把变量说成对象(object)
变量和文字常量都有存储区,并且有相关的的类型。区别在于变量是可寻址的。
对于每一个变量都有两个值与其相关联:
- 它的数据值,存储在某个内存地址中。有时候这个值也被称为对象的右值。我们也可认为右值的意思是被读取的值。文字常量和变量都可别用作右值。
- 它的地址值,存储数据值的那块内存的地址。它有事被称为变量的左值。我们也可认为左值的意思是位置值。文字常量不能被用作左值,
定义—–1—-内存的分配—-2—-名字与分配的空间关联
基址*10+偏移量
板书