【C/C++指针】指针*与引用&的区别

  • 指针变量的值是所指对象的地址(准确说是首地址,其类型定义其所指对象的字节长度)
  • 引用变量的值是所引用对象本身的值

1 初始化

  • 指针变量 可不初始化 且 可以更换指向对象
int *p;//此时是个野指针,该指针变量的值是任意值,不指向任何对象
//---//
int a = 4, b = 5;
int* p = &a;//分为两步:int* p, p = &a
//指针变量所指对象可变(即指针变量的值若没有const的限制是可以变化的)
int a = 4, b = 5;
int *p;//让其暂时做野指针
p = &a;
p = &b;//先指向对象a,再修改为指向对象b
  • 而引用变量 要且必须要初始化,但也可以改变引用对象
int& r;//错误:未初始化引用
//---//
int a = 4;
int& r = a;
int a = 4, b = 5;
int& r = a;
r = b;//引用对象改变

2 级间的独立性

  • 指针可以有 一级指针,二级指针,甚至更多级指针,每级指针变量被存放在不同的地址上(即 &p 得到的值不同)
int a = 4;
int* p1 = &a;//一级指针:指向对象为整形变量a
int** p2 = &p1;//二级指针:指向对象为指针变量p1,即一级指针

cout << **p2;//对二级指针两次解引用得到整形数据
typedef int&  lref;
typedef int&& rref;
int n;
 
lref&  r1 = n; // type of r1 is int&
lref&& r2 = n; // type of r2 is int&
rref&  r3 = n; // type of r3 is int&
rref&& r4 = 1; // type of r4 is int&&
  • 可以创建指向指针的指针,但不能创建指向引用的指针
int&* p2r;//Error 

3 数组

  • 可以创建指针数组
int *ap[]; // OK, array of pointers
  • 但不能创建引用数组
int &ar[]; // ill-formed, array of references

参考blog(platform:Stack Overflow):指针变量和引用变量之间有什么区别?
拓展blog:【C语言精髓之指针】结构体指针(->与.两个运算符的区别)

相关推荐

  1. 指针引用区别

    2023-12-07 00:58:01       53 阅读
  2. 【C/C++指针指针*引用&区别

    2023-12-07 00:58:01       60 阅读
  3. 引用指针区别

    2023-12-07 00:58:01       31 阅读
  4. c++指针引用区别

    2023-12-07 00:58:01       51 阅读
  5. 面试题:指针引用区别

    2023-12-07 00:58:01       46 阅读
  6. C++里指针引用区别

    2023-12-07 00:58:01       34 阅读
  7. C++引用指针区别

    2023-12-07 00:58:01       24 阅读
  8. C++二级指针指向引用

    2023-12-07 00:58:01       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-07 00:58:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-07 00:58:01       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-07 00:58:01       82 阅读
  4. Python语言-面向对象

    2023-12-07 00:58:01       91 阅读

热门阅读

  1. 【微服务】分布式限流如何实现

    2023-12-07 00:58:01       65 阅读
  2. Windows 安装 flash-attention 和 bitsandbytes

    2023-12-07 00:58:01       51 阅读
  3. 编写bat脚本执行msyql建库sql

    2023-12-07 00:58:01       52 阅读
  4. 在windows下编译libiconv库

    2023-12-07 00:58:01       59 阅读
  5. vue2 组件内路由守卫使用

    2023-12-07 00:58:01       57 阅读
  6. for...in 和for...of 的区别

    2023-12-07 00:58:01       52 阅读
  7. 视频播放器

    2023-12-07 00:58:01       55 阅读
  8. OpenCV4.x图像处理实例-常见图像滤镜特效实现

    2023-12-07 00:58:01       56 阅读
  9. 3.3 SaltStack 的部署和自动化配置

    2023-12-07 00:58:01       50 阅读
  10. 悲观锁乐观锁在django中使用

    2023-12-07 00:58:01       34 阅读
  11. 基础Python教程之读写sqlite

    2023-12-07 00:58:01       67 阅读