C++基础之:引用与指针的区别

原创 2011年01月07日 22:32:00

 

C++中指针和引用的功能很相似,共同点为都可以直接或者是间接地 指代其他的对象 。下面介绍不同点

1:操作符

指针使用“* ”和“ -> ”操作符,引用使用的是“ .

2:变量初始化

首先引用不能为空,指针可以为空。

引用必须要指代对象,指针可以在初始化时

string &str; //错误,引用不能为空

string s("liyachao");

string &rs=s; //可以

string *ps; //可以,指针没有限制

注意:不要引用空的地址,例如:

char * pc=0; //指针指向空地址

char & rc = *pc; // 引用指向空地址,导致结果不确定,危险

3:效率问题,引用比指针更有效

由于引用不能为空,所以他比指针效率更高,用在函数参数时,引用不需要检查是否有效,而指针在使用时必须检测是否为空。

4:重新赋值

指针可以重新复制,用来指向另外一个不同的对象;引用总是指向他初始化时指代的对象。

string s1("liyachao");

string s2("harry");

string & rs = s1; //可以,指向 s1

string *ps = &s1; //可以指向 s1

rs = s2; // rs仍然指向 s1 ,但是 s1 的值变成了 "harry"

ps = s2; // ps指向 s2 s1 值不变

总结:

使用指针的情况:

当有可能什么都不指向时,或者是在不同的时候指向不同的对象时用指针。

使用引用的情况

1:总会指向一个对象,并且一旦指向哪个对象,就不会指向其他的对象,使用引用。

2:当实现某些操作符的时候。比如: [] ,这个操作符通常需要返回一个值作为(下一个)赋值语句的赋值目标。

vector<int> v(10);

v[5] = 10; //目标为返回操作符 []

如果[] 操作符返回一个指针,上面最后一个语句就必须写成:

*v[5] = 10;

绝大多数情况下[] 操作符应该返回引用。

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

KNN分类算法及其改进

一般有两种方法计算相似度:(1)欧氏距离,两个标准化的文本向量a,b之间的欧氏距离为:...
  • boom_j
  • boom_j
  • 2016年12月26日 16:42
  • 1459

基于KNN算法的用户兴趣主题的发现

根据用户访问的网页,得到用户喜爱的模型如下的步骤: 1、将用户访问的网页,分词处理,去停用词 2、VSM向量空间模型的创建,VSM单词数满足训练集的单词数。 3、使用KNN算法,选择使用余弦距离...
  • u011955252
  • u011955252
  • 2016年03月11日 15:23
  • 391

KNN算法及其实现

K-邻近算法(k-NearestNeighbor,KNN),存在某一样本集,已经知道样本和对应的类别,当输入一个没有类别标识的数据时,找出与其“最相似”的K个样本,在这k个样本中,哪个类别的样本个数最...
  • Hearthougan
  • Hearthougan
  • 2017年03月04日 22:55
  • 278

基于Hadoop的Knn算法实现

Knn算法的核心思想是如果一个样本在特征空间中的K个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别...
  • Angelababy_huan
  • Angelababy_huan
  • 2016年11月05日 15:16
  • 1384

C++中指针和引用的区别

1.指针和引用的定义和性质区别: (1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。如: in...
  • koalacoco
  • koalacoco
  • 2013年12月05日 15:23
  • 392

C++小知识之指针和引用的区别

温故而知新,指针和引用的概念,大学时都已熟知,实际用的时候往往又有些疑惑,故深入探究一下。 从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向...
  • xdrt81y
  • xdrt81y
  • 2014年01月08日 17:24
  • 9298

kNN算法

数组的大小可以通过其shape
  • u012328476
  • u012328476
  • 2014年04月15日 10:13
  • 967

KNN算法示例

# -*- coding: UTF-8 -*- import math import csv import random import operator ''' @author:hunter @ti...
  • mori66
  • mori66
  • 2017年04月13日 22:28
  • 343

C++类的对象和类的指针的区别、指针和引用的区别

#include #include using namespace std; class Student { public: static int number; str...
  • liulina603
  • liulina603
  • 2015年08月05日 08:44
  • 2998

C++引用&和指针在作为形参时的区别

int n; int &m = n; 在C++中,多了一个C语言没有的引用声明符&,如上,m就是n的引用,简单的说m就是n的别名,两者在内存中占同样的位置,不对m开辟新的内存空间,对m的任...
  • ljb825802164
  • ljb825802164
  • 2016年01月19日 10:25
  • 4579
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++基础之:引用与指针的区别
举报原因:
原因补充:

(最多只允许输入30个字)