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

c++ 指针、引用和常量

指针、引用和常量的关系_夜悊的博客-CSDN博客

1.

① 指针是对象,引用不是对象(在此可以理解为变量,一个变量是一个对象)

  • 指针不必须初始化
  • 引用只是为一个已经存在的对象所起的另一个名字(别名):所以普通引用不可指向常量
  • 引用必须初始化(初始化时的右值是一个已经存在的对象
int *p;	int val;	    //一个已经存在的“对象”
int &ref = val;int &ref1;	    //× 引用必须初始化
int &ref2 = 1;	//× 普通引用不可指向常量

② 不能定义指向引用的指针(因为引用不是对象)

int val;
int &ref=val;
int &*p=ref;	//×

③ 可以定义指向指针的引用(因为指针是对象)

int a = 3;
int* p = &a;
int& ref = p;  // x
int&* ref = p; // x 即 int& (*ref) = p;
int*& ref = p; // 即 int* (&ref) = p;

int &*p  错误,*与p靠得最近,所以p是一个指针,但是这个指针的类型是int &,所以这个是错吴的, 因为不能创建引用的指针。

int *& p 正确, &与p靠得最近,所以p是一个引用,这个引用的类型是int*,也就是一个指针变量的引用,但是必须初始化,否则也是错误的。

④  不能定义引用类型的常量(因为引用不是对象):可以简记为const&,但没有&const。

  • 普通指针不可指向常量,普通指针也不可指向const变量
  • 指向常量的指针可指向常量
  • 指向常量的指针可指向非常量
  • 普通引用不可指向常量
  • 指向常量的引用可指向常量
  • 指向常量的指针可指向非常量
int val = 0;
int &const ref = val; // × 不能定义引用类型的常量
int const &ref = val; // 指向常量的引用可以(简称”常引用“)

注:const可以修饰基础类型或指针,不能修饰引用(因为const只能修饰对象)。 

zconst关键字修饰的对象_sgbl888的博客-CSDN博客_const修饰对象

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

相关文章:

  • 1、HAL库UART 中断|DMA 自动回显接收数据
  • NPOI - ConditionalFormattingRule
  • JavaのString类这一篇就够了(包含StringBuffer_Builder)
  • C# dataGridView 导出表格 xls NPOI 2.4.1 版本
  • 秒杀项目的消息推送
  • 最近开发及 vue3 几个小总结
  • 代谢组学分享-花青素通过调节氨基酸代谢改善糖尿病肾病的肾功能
  • 超简单!pytorch入门教程:Tensor
  • 如何使用COCO数据集,注意事项
  • 金三银四跳槽季,JAVA面试撸题就来【笑小枫】微信小程序吧~
  • 分享115个HTML电子商务模板,总有一款适合您
  • Python 字符串
  • 总线定义,车载总线:车载etherNet or CAN
  • Python(for和while)循环嵌套及用法
  • 6万字电力行业系统解决方案光伏电站综合安防系统解决方案
  • [Android Studio]Android 数据存储--SQLite数据库存储
  • 学校节能降耗减排方案——能耗监管平台的建设及效果剖析
  • 探索IP地址的应用
  • 点赞破万!阿里面试官总结的2022最新1685页Java面试宝典太全了
  • 项目搭建规范
  • 8.Docker Machine
  • 如何配合使用ESLINT 和 PRETTIER
  • 学英语的优势已来,抓住这个机会
  • 基于微信小程序云开发实现考研题库小程序项目(完整版)
  • AI一点通:使用 ColumnTransformer 转换 Pandas DataFrame 的一个或多个列
  • 【C语言】全局变量、局部变量和静态变量的区别
  • 血氧仪「上潜」,智能穿戴「下沉」
  • CPP2022-计算机类-期末考试
  • 【蓝桥集训】第二天——差分
  • Spring Boot最核心的27个注解,你了解多少?