博客
关于我
C++中的引用‘&‘和指针的区别,以及指针使用的注意事项
阅读量:367 次
发布时间:2019-03-04

本文共 924 字,大约阅读时间需要 3 分钟。

引用与指针基础知识

引用

在C++中,引用通过使用&符号来实现,它并不是一个独立的数据类型,而是对变量的别名。引用与原变量具有相同的内存地址,因此对引用进行操作会直接影响原变量。

例如:

int a = 10;int &b = a; // b 是 a 的别名int c; // c 未初始化int &d = 30; // d 未初始化b = 20; // 此时 a 的值也变为了 20

引用意味着变量名的另一种表示方式,操作符号对应的也是原变量的操作。引用与指针不同,引用在声明时必须初始化,且不能通过赋值操作来重新指定其所指向的对象。

指针

指针是C++中用于操作内存地址的重要工具。&符号用于获取变量的内存地址,而*符号用于从指针获取所指向的值。指针变量前缀通常使用*,例如int *ptr表示一个指向整数的指针。

例如:

int a = 1;int *b, *e; // b 和 e 是指针变量b = &a; // b 现在指向 a 的地址*e = *b; // e 现在指向与 b 相同的地址int c = 2;int *d = &c; // d 指向 c 的地址d = d; // 这是冗余操作
指针的初始化

初始化指针的正确方法至关重要。未初始化的指针可能指向无效内存地址,导致不可预测的错误。常见的初始化方式包括:

int *N = 0; // 将 N 初始化为空指针int *N1 = nullptr; // 使用 nullptr 初始化指针,避免使用 0
指针的危险性

使用指针时需要特别注意内存管理。未初始化的指针可能指向随机内存地址,导致运行时错误。因此,遵循以下原则是必要的:

  • 在指针首次使用之前,必须确保指针指向合法内存地址。
  • 使用newdelete运算符来管理动态内存。
  • 避免使用未初始化的指针进行操作。

指针的高级应用

在实际编程中,指针常用于文件操作、动态内存管理以及多线程编程等场景。例如,可以使用指针来引用动态分配的内存块,或者用指针作为函数参数传递内存地址。

总结

引用和指针是C++中核心概念,引用用于对变量进行别名操作,而指针用于操作内存地址。正确使用引用和指针需要严格遵守内存管理规则,以避免潜在风险。

转载地址:http://nyzg.baihongyu.com/

你可能感兴趣的文章
Nginx:NginxConfig可视化配置工具安装
查看>>
ngModelController
查看>>
ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
查看>>
ngrok内网穿透可以实现资源共享吗?快解析更加简洁
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
查看>>
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>