美文网首页
2017 09 15

2017 09 15

作者: 曹耀文08 | 来源:发表于2017-09-17 14:04 被阅读4次

    对程序的结构的相关学习:

    一  指向对象的指针数组

    数组的元素是指针型

    Point  *pa[2];

    由pa[0],pa[1]两个指针组成,都指向Point类型的对象。

    指针常量和常量指针(指向常量的指针)

    指针常量:

    在指针定义语句的指针名前加const, 表示指针本身是常量。

    int a; int* const p=&a;  定义时必须初始化

    指针值p不可以修改,指针指向的内容可以修改。

    即p是常量,不可以作为左值进行运算,*p可以修改

    左值:是对应内存数据的一个表达式,左值对应的内存空间的内容允许刷新。可以出现在赋值运算符的左侧。

    右值:右值指的是引用了一个存储在某个内存地址里的数据。出现在赋值运算符的右侧。

    要求左值运算:++,--,+=等

    常对象和常成员函数

    常对象:数据成员值在对象的整个生存期间内不能被改变。

    即常对象定义是必须进行初始化,而且不能被更改。

    引用(reference)的概念

    为一个变量、函数等对象规定一个别名,该别名称为引用。此后,对别名的操作即是对别名所代表的对象的操作。

    引用必须初始化。引用一旦被声明则不能再修改.

    为提高可读性,引用与变量、指针定义尽量不在同一行。 尽量避免这样的语句int a,&ra=a,*p=&a;

    void &a=3;//error

    void 本质不是一个类型,只是在语法上相当于一个类型,没有该类型的对象。

    形参和实参结合规则:

    形参为引用时,凡遇到形参(引用)的地方,全部用实参(对象)来代替。

    参数结合符合初始化标准

    传递引用给函数与传递指针的效果相同。

    可读性比指针传递好(与传值方式的调用可读性相同,性能却强于传值方式)

    可使用引用传递从函数返回多个值(指针和引用都可以)

    四 引用和指针的关系

    指针是个变量,可再赋值;  而引用建立时必须进行初始化并且决不会再关联其它不同的变量。

    指针操纵两个实体(指针值、指向的值);引用只能操纵一个实体。

    引用在内部用指针实现 ,被看成是指针常量,不能操作自身的地址值,只能访问所指向的实体。

    在语言层面,引用的用法和对象一样;在二进制层面,引用一般都是通过指针来实现的,只不过编译器帮我们完成了转换.

    实际上“引用”可以做的任何事情“指针”也都能够做,为什么还要“引用”?

    答案是“用适当的工具做恰如其分的工作”。

    指针能够毫无约束地操作内存中的东西,尽管指针功能强大,但是非常危险。  引用是指针出于安全考虑的替代品。

    在以下情况下你应该使用指针:

    一是你考虑到存在不指向任何对象的可能(在这种情况下,你能够设置指针为空)        二是你需要能够在不同的时刻指向不同的对象(在这种情况下,你能改变指针的指向)。

    如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么你应该使用引用。

    用const 限定引用

    用const 限定引用声明方式:

    int  i;  const int& p=i;

    用这种方式声明的引用,不能通过引用对目标变量的值进行修改,保证了引用的安全性。

    作为参数可以保证在函数执行时不被修改

    int f(const int& cs){……}

    int main(){

    int s;

    f(s);

    //…….

    }

    int i;

    const int * p=&i;

    const int& p=i;

    效率相同

    引用的使用-函数调用作为左值

    int a=0,b=0,c=0;

    int & count(int k)

    {

    if(k>60) return(a);

    if(k<=60&&k>30) return(b);

    if(k<=30) return(c);

    }

    int main()

    {int i,j;

    for(i=0;i<15;i++)

    {

    cin>>j;

    count(j)++;

    }

    cout<

    相关文章

      网友评论

          本文标题:2017 09 15

          本文链接:https://www.haomeiwen.com/subject/nvgpsxtx.html