c++ 引用和指针

1.引用

程序把引用和它的初始值绑定在一起,而不是将初始值拷贝给引用。一旦初始化完成,引用将和它的初始值对象一直绑定在一起。因为无法令引用重新绑定到另外一个对象,因此引用必须初始化。

int ival=2;

int &refval=ival;

ival=8; //此时 refval=8;

int i=refval   //i的值为8

int &refval; //报错:引用必须初始化

int &refval=10;//报错:引用类型的初始值必须是一个对象

double dval=9;

int &refval2=dval;//报错:引用类型的初始值必须是一致,是int.

2.指针

指针本身就是一个对象,允许对指针赋值和拷贝,而且指针的生命周期内它可以先后指向几个不同的对象

指针无需在定义时赋初值。和其他内置类型一样,在块作用域内定义的指针如果没有初始化,也将拥有一个不确定的值。

int ival=9;

int *p=&ival;

double dval;

double *pd=&dval; //正确:初始值是double型对象的地址

double *pd2=pd;    //正确:初始值是指向double对象的指针

指针值:

1.指向一个对象。

2.指向紧邻对象所占空间的下一个位置。

3.空指针,意味着指针没有指向任何对象。

4.无效指针,也就是上述情况之外的其他值。

指针访问对象

int ival=9;

int * p=&ival;//p存放着变量ival的地址,或者说p是指向变量ival的指针。

cout<<*p   //由符号*得到指针p所指向的对象,输出42.

int *p1=nullptr;  //等价于int *p1=0;

int *p2=0;//直接将p2初始化为字面常量0

时间: 2024-11-10 14:42:32

c++ 引用和指针的相关文章

java定义类 对象,引用,指针

java是根据面向对象编程,因此有类和对象的概念,类分为普通类与抽象类. 一.定义类 类由N个 构造器  成员变量  方法组成,可以不定义,也可以根据语法定义N个. [修饰符] class 类名{ 构造器*N个 成员变量*N个 方法*N个 } 1.类的修饰符只能是public final abstract 三种之一,或者不修饰 ,类名一般大写开头,驼峰命名 (一).成员变量的定义 [修饰符] 数据类型  变量名 : [修饰符] 数据类型  变量名  = 默认值: 1.修饰符:  可以不写(默认)

C++引用与指针的区别

转!!!! http://blog.csdn.net/wangqiulin123456/article/details/8464418 虽然使用引用和指针都可以间接访问另一个值,但他们之间有两个重要区别: 引用总是指向某个对象,定义引用没有初始化是错误的. 赋值行为的差异,给引用赋值修改的是该引用所关联的对象的值,而并不是使引用与另一个对象关联.引用一经初始化,就始终指向同一个特定对象. ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名. ★

引用计数指针

如前面内存泄露中所讲的,引用计数指针可以被复制.因此,一个智能指针的几份拷贝可以指向同一个对象.这就产生了由哪份拷贝负责删除它们共同指向的对象这个问题.答案是这组智能指针中最后消亡的那个将删除它所指向的对象.这类似于家居规则:"最后一个离开屋子的人负责关灯."为了实现这个算法,这些指针共享一个计数器,记录有多少个智能指针引用同一个对象,即"引用计数"这个术语的由来.引用计数的应用范围很广:这个术语简单意味着,编译器具有一个隐藏的整型变量作为计数器.每当有人创建了一个

函数可以返回一个局部对象,而不能返回一个局部对象的引用(指针):

函数可以返回一个局部对象,而不能返回一个局部对象的引用(指针):当函数返回一个局部对象时,虽然这个对象已经释放,但是返回时会产生一个临时的对象.而当返回一个局部对象的引用时,这个对象已经不存在了.这就要求在函数参数中,包含一个引用或指针.int &func(int a,int b,int &retsult){ retsult = a + b; return &retsult}但是如下代码是错误的(返回局部对象的引用)int &func(int a,int b){ int &

引用与指针的区别

引用:相当于给一个变量取的别名,它本身不是一种数据类型,因此不战用存储空间,不能建立数组的引用 引用作为函数参数:当发生函数调用时,用引用作为参数,在内存中并不会产生实参的副本,也不会给引用这个形参分配空间, 而是直接对实参进行操作,但如果用一般变量作为函数参数,则会给它分配空间,并且作为实参的副本,如果 传递的是对象,还将调用拷贝构造函数 引用与指针的区别:相同点:引用与指针都会导致实参对象值的改变 不同点:a.引用不用分配空间,指针要分配空间,且指针作为形参在调用时,必须用变量的地址作为实参

引用 与 指针

我们知道,引用 和 指针都是C++的符合类型之一. 一  关于引用 引用(reference) 是为对象起了另外一个名字,引用类型 引用  另外一种类型. 和初始化变量不同的是, 在定义引用的时候,程序把引用和它的初始值  绑定 在一起,而不是把初始值拷贝给引用.两者是绑定在一起,那么,就可以通过引用去修改初始值: 例: int val = 20; int &ri = val ; ri  = 82; 那么此时val的值也会更改为82,反之成立. 一但初始化完成,引用将和它的初始值对象一直绑定在一

基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------&gt; 可以返回派生类对象的引用或指针

您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. 百度和网页 http://bbs.csdn.net/topics/380238133 的作者无关,不对其内容负责.百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面. 首页 精选版块 移动开发 iOS Android Qt WP 云计算 IaaS Pass/SaaS 分布式计算/Hadoop J

浅谈C/C++引用和指针的联系和区别

为什么C/C++语言使用指针? 答案:①一方面,每一种编程语言都使用指针.不止C/C++使用指针. 每一种编程语言都使用指针.C++将指针暴露给了用户(程序员),而Java和C#等语言则将指针隐藏起来了. "Everything uses pointers. C++ just exposes them rather than hiding them," It's easier to give someone an address to your home than to give a

引用与指针

引用是C 中的概念,初学者容易把引用和指针混淆一起. 一下程序中,n是m的一个引用(reference),m是被引用物(referent). int m; int &n = m; n相当于m的别名(绰号),对n的任何操作就是对m的操作. 所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己. 引用的规则: (1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化). (2)不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL). (3)一旦引用被初始化,就不能改

【转】C++引用和指针

[C++再学习系列] 引用和指针 2010-11-09 13:18 by zhenjing, 2203 阅读, 10 评论, 收藏, 编辑 下面是网上关于引用和指针区别的常见答案: 引用和指针有如下三种区别: 1 引用必须在声明时初始化,而指针不用: 2 NULL不能引用,而指针可指向NULL: 3 引用一旦声明,引用的对象不能改变(但对象的值可以改变):而指针可以随时改变指向的对象. 引用能做到的,指针也可以,但指针更危险: (1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化).