当前位置: 首页 > news >正文

【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;//对二级指针两次解引用得到整形数据
  • 引用会折叠多级引用
    引用声明-cppreference
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语言精髓之指针】结构体指针(->与.两个运算符的区别)

http://www.lryc.cn/news/251088.html

相关文章:

  • 【ArcGIS Pro微课1000例】0039:制作全球任意经纬网的两种方式
  • 【二叉树】练习题终章
  • flutter开发实战-实现获取视频的缩略图封面video_thumbnail
  • Prompt Toolkit探索:打造交互式CLI应用
  • 【已解决】AttributeError: module ‘gradio‘ has no attribute ‘outputs‘
  • WPF Mvvm模式下面如何将事件映射到ViewModel层
  • C# WPF上位机开发(计算器界面设计)
  • [c]比较月亮大小
  • 【Java 基础】16 泛型
  • Android framework定制1-->用户无操作一段时间,自动播放客户提供的视频,用户操作后退出播放
  • Vmware17虚拟机安装windows10系统
  • Golang实践录:读取yaml配置文件
  • oracle sql相关语法
  • el-table,列表合并,根据名称列名称相同的品名将其它列值相同的进行合并
  • 微信小程序显示二维码?
  • JavaWeb开发全流程笔记
  • LLM;超越记忆《第 2 部分 》
  • Python中的加法测试题实现
  • 使用gcloud SDK 管理和部署 Cloud run service
  • JS逆向-mytoken之code参数
  • 第九节HarmonyOS 常用基础组件4-Button
  • 常用数据预处理方法 python
  • 【无标题】AttributeError: module ‘gradio‘ has no attribute ‘outputs‘
  • 无人机助力电力设备螺母缺销智能检测识别,python基于YOLOv7开发构建电力设备螺母缺销小目标检测识别系统
  • 动态页面技术的发展与应用
  • 1-算法基础-编程基础
  • HarmonyOS应用开发——程序框架UIAbility、启动模式与路由跳转
  • node.js-连接SQLserver数据库
  • 目标检测YOLO系列从入门到精通技术详解100篇-【图像处理】图像预处理方法
  • Android drawable layer-list右上角红点,xml布局实现,Kotlin