颍上人才网
颍上职场资讯
颍上面试技巧
正文:深入理解C++中指针与引用的区别及使用场景
深入理解C++中指针与引用的区别及使用场景
来源:网络整理2025-03-21

C++面试常用问题:"引用"与指针的区别

指针通过某个指针变量指向一个对象,然后可以对该指针所指向的变量进行间接操作。

程序中运用指针,会导致程序的可读性不佳;引用本身就是目标变量的别名,对引用进行操作也就是对目标变量进行操作。另外,还有对函数传递引用(ref)和指针的区别。

拓展阅读:

引用:

(1)&在此不是求地址运算,而是起标识作用。

(2)类型标识符是指目标变量的类型。

(3)声明引用时,必须同时对其进行初始化。

引用声明结束后,目标变量名有两个名称,一个是目标原名称,另一个是引用名,并且不能将该引用名用作其他变量名的别名。

int a=2,int &ra=a;

目标原名称为 a,目标引用名为 ra。给 ra 进行赋值操作,即 ra 等于 1;这与 a 等于 1 是等价的。

引用求地址,就是对目标变量求地址。&ra 和 &a 是相等的。也就是说,我们常说引用名是目标变量名的一个别名。别名这个词给人的感觉好像是引用不占据任何内存空间。然而,编译器通常会将其实现为 const 指针,也就是指向位置不可变的指针。这意味着引用实际上与一般指针一样占用内存。

数组是由若干个元素组成的集合,所以不能建立由引用组成的“集合”,即不能建立引用的数组。然而,可以建立数组的引用。

ref[2] = 5;//给引用数组的第三个元素赋值为 5

但是可以这样写:

const int ref[3] = {2, 3, 5}; //gcc 编译时需加上选项 -std=c++0x ,这里的 ref 是一个引用,它引用了一个包含 3 个整数的数组,数组元素分别为 2、3、5 。

ref[0] = 35; //错误

指针引用_指针的引用是什么意思_面试指针和引用的区别

为什么要加上 const 呢?因为此时 {2,3,5} 是一个字面值数组,它具有保存在代码段里且只读的属性。如果不加 const ,就会出现编译错误,并且后面对 ref[0] 的赋值也无法成功。

需要特别强调的是,引用并不会产生对象的副本,只是对象的同义词。所以,当下面的语句被执行之后:

pt1.offset(12,12);

pt1和pt2都具有(12,12)的值。

引用需要在定义的时候立即被初始化,因为它必须是某个东西的同义词。你不能先定义引用然后才去做其他事情。

初始化它。例如下面语句是非法的:

Point &pt3;

pt3=pt1;

那么既然引用只是某个东西的同义词,它有什么用途呢?

下面讨论两个主要的引用用途:一是作为函数参数,二是从函数中返回左值。

指针:

C++标准规定,“指针”这个概念不适用于成员指针,并且这里的成员指针不包含指向静态成员的指针。

C++标准规定,指针分为两类:

对象指针类型,它指向 void 或者对象类型,意味着该类型能够表示对象在内存里的字节地址或者空指针。

function pointer type:指代一个函数

温馨提示:本内容地址http://m.ysjob.cc/article/articledetail-251886.html转载请注明,以上深入理解C++中指针与引用的区别及使用场景资讯信息来自颍上人才网(颍上地区最大的颍上人才网颍上人才网

 
 ©2003-2018 颍上人才网  
客服电话:  QQ: