美文网首页
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