C课堂笔记day5 | 我的日常分享

C课堂笔记day5

变量

  • 假设有这样一个问题 计算2的10次方,我们首先想到的可能是:
1
2
3
4
5
6
#include<iostream>
int main(){
cout<<2*2*2*2*2*2*2*2*2*2;
cout<<endl;
return 0;
}

我们称之为蛮力法。我们程序猿最怕的就是需求变更,我们这样写就给自己埋下了一个隐患,当需求不是要计算2的10次方的时候,就需要重新改动,需要消耗大量的时间。
虽然这种蛮力型的方案也能解决问题,但是他总让人感到不愉快,而且有些危机感。
复杂的技术方案一般在开始的阶段需要很多时间,这时常会感觉什么都没有做。而且处理过程是自动的,所以就更有可能出错。
事情不可避免会出错。但好处在于,这些错误过程中,不但事情很快就能完成,而且拓展了想象空间,有时候,这个过程也挺有趣的。

一个标准的程序员的思维超与常人。

  • 在本例中,用来取代这种蛮力法的方案包括两部分内容:使用有名字的对象来读写每部的计算:引入一个控制流的结构,一遍在某个条件为真时,可以重复执行一系列的语句。下面是一种“技术先进的”计算2的10次幂的程序:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include<iostream>
    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
    #include<iostream>
    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. 它的地址值,存储数据值的那块内存的地址。它有事被称为变量的左值。我们也可认为左值的意思是位置值。文字常量不能被用作左值,

定义—–1—-内存的分配—-2—-名字与分配的空间关联

基址*10+偏移量

板书

图片