c引用和指针的区别
指针和引用的定义
在深入介绍之前我们首先来看一下指针和引用的定义、指针和引用的区别,然后分别针对指针和引用展开讨论,深入细节为何有这些差异。
指针的权威定义:
In a declaration T D where D has the form * cv-qualifier-seqopt D1 And the type of the identifier in the declaration T D1 is “derived-declarator-type-list T”, then the type of the identifier of D is “derived-declarator-type-list cv-qualifier-seq pointer to T”。 The cv-qualifiers apply to the pointer and not to the object pointer to.
——摘自《ANSI C++ Standard》
注:可能有些读者并不明白cv-qualifier-seq
CV-qualifiers(CV限定符)
CV-qualifiers有三种:const-qualifier(const限定符)、Volatile-qualifier(volatile限定符)、以及const-volatile-qualifier(const-volatile限定符)。
const类对象的非静态、非mutable、以及非引用数据成员是const-qualified;
volatile类对象的非静态、非引用数据成员是volatile-qualified;
const-volatile类对象的非静态、非引用数据成员是const-volatile-qualified。
当CV-qualifiers用于限定数组类型时,实际上是数组成员被该CV-qualifiers限定,而非该数组类型。
复合类型并不因其成员被CV-qualifier限定而被该CV-qualifier限定,也就是说,即使复合类型的成员有CV-qualifier限定,该复合类型也不是CV-qualified对象。
引用的权威定义:
In a declaration T D where D has the form& D1 And the type of the identifier in the declaration T D1 is “derived-declarator-type-list T”, then the type of the identifier of D is “derived-declarator-type-list cv-qualifier-seq reference to T”。 Cv-qualified references are ill-formed except when the cv-qualifiers are introduced through the use of a typedef or a template type argument, in which case the cv-qualifiers are ignored.
——摘自《ANSI C++ Standard》
上面这些定义初看有些难懂,如果是这样的话,那说明你对C++还不够熟悉,你还有很长的路要走。下面用通俗易懂的话来概述一下:
指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const、volatile等等。见下图,所示指针的含义:
引用-引用是一个对象的别名,主要用于函数参数和返回值类型,符号X&表示X类型的引用。见下图,所示引用的含义:
非常好我支持^.^
(0) 0%
不好我反对
(0) 0%
下载地址
c引用和指针的区别下载
相关电子资料下载
- 常见的一级指针参数有什么作用 72
- 函数类型和函数指针类型的区别 18
- 一文详解ZGC关键技术 26
- C语言编写程序执行效率高的原因是什么? 31
- C编程中指针的语法和工作原理 152
- PLC指针类型与间接寻址如何使用 26
- JVM指针压缩的工作原理 66
- 指针式万用表和数字式万用表使用区别 117
- Linux整体汇编启动流程分析 122
- 如何使用指针数据包定义数据缓冲区 71