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

C语言里指针和引用的区别

在C语言中指针,全称为指针变变量,是用来存储内存地址的一种变量。

在程序中,一般通过指针来访问其指向的内存地址中的内容(数据)。

引用,是C++中提出来的一种新的使用变量的方式,即,给实际变量起个别名,通过这个别名来引用实际的变量。

标准C中不支持变量的引用。

指针和引用这两个概念没有任何相关性。

指针是实实在在的变量,有自己的内存存储空间,它可以指向任何有效的变量。

引用是一种形式、方法,定义的引用变量,实际上是原实际变量的另一个名称(别名),

引用变量本身没有自己的实际存储空间,操作引用变量,就是在操作实际变量。

总结起来就是:

1.指针是一个实体,而引用是一个别名;在汇编上,引用的底层是以指针的方式实现的,定义一个引用变量,相当于就是定义了一个指针,然后把引用内存的地址写到这个指针里面,当通过引用变量修改它所引用的内存时,它先访问了指针里面的地址,然后在这个地址的内存里面对值进行修改

 2.指针可以不初始化,通过赋值可以指向任意同类型的内存;但是引用必须初始化,而且引用一经引用一块内存,再也不能引用其它内存了,即引用不能被改变

 3.在进行 sizeof 操作时, sizeof 指针在 32 位系统下永远是 4 个字节,而 sizeof 引用计算的 是它所引用内存的大小

4.引用是内存单元的别名,不是数值的别名。

int &a=10;//error

底层是指向10的地址,引用不能取地址的数据

 5.引用只能使用引用变量所引用的数据,例如b是a的别名,b只能使用a的数据

相关文章:

  • 大数据平台数据集市
  • 认证SQL基础知识
  • Caused by: java.lang.IllegalArgumentException:LoggerFactory is not a Logback LoggerContext but Logba
  • C语言-快速排序
  • JAVA实现-URL短网址生成算法
  • JAVA-字符串连续出现字母进行压缩
  • C语言-字符串连续出现字母进行压缩
  • C语言数组引用
  • c语言中二维数据的存储方式
  • C语言-注释符
  • C语言%d%c%f
  • C语言-定义一个字符串
  • 2019
  • Mac上配置SublimeText运行C语言
  • C语言-按规则读取指定文件(2016.七)
  • [译] 怎样写一个基础的编译器
  • Apache的基本使用
  • CentOS 7 修改主机名
  • export和import的用法总结
  • Git 使用集
  • iOS编译提示和导航提示
  • Java到底能干嘛?
  • Leetcode 27 Remove Element
  • node和express搭建代理服务器(源码)
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 大主子表关联的性能优化方法
  • 关于字符编码你应该知道的事情
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 经典排序算法及其 Java 实现
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 配置 PM2 实现代码自动发布
  • 一个JAVA程序员成长之路分享
  • kubernetes资源对象--ingress
  • ​低代码平台的核心价值与优势
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #include<初见C语言之指针(5)>
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #QT(一种朴素的计算器实现方法)
  • (1)(1.11) SiK Radio v2(一)
  • (3)nginx 配置(nginx.conf)
  • (arch)linux 转换文件编码格式
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET 2.0中新增的一些TryGet,TryParse等方法