先解决两个疑问:

◆ 指针和引用的不同之处是什么?

◆ 何时用用指针?何时用引用?

01  指针和引用的不同之处

看如下代码:

指针是用来表示内存地址的,而指针这个整数正是被指向的变量地址。

而引用就是给变量重新起了一个名字,引用也就是“别名”。

不同之处:

◆ 指针在声明时可以暂时不初始化,当然每次使用指针时都要做检查,以防出现空指针异常的问题0。而引用永远都不会为空,它一定得代表某个对象。

◆ 指针存放的是地址,可以被重新赋值。而引用总是指向它最初代表的那个对象。

02  指针和引用使用场合

引用主要是作为函数的参数和返回值来使用的,看如下代码:

通过vec[3] =3可改变vector容器的值,这是因为[]操作符返回的就是引用。也就是为内部的变量取了一个别名,还能让[]操作符返回一个指针,即*vec[3]=3。实际上引用可以做的事情指针都可以做,那为什么还要使用引用?

答案如下:

用恰当的工具做恰如其分的工作。

指针可以毫无约束的操作内存中的任何东西,功能十分强大,但也很危险,所以可以在恰当的时机使用引用。

当你需要指向某个东西,绝不会让其指向其它东西,例如有些函数参数为了避免拷贝可以使用引用,或者实现一个操作符而其语法需求无法由指针达成,例如vec[3]=3,可以使用引用,而其它任何时候,都要使用指针。

返回指针_C语言面试中的问题指针和引用的使用场景?相关推荐

  1. c语言指针++_C和C ++中的指针

    c语言指针++ C中的指针是什么? (What is Pointer in C?) A pointer is a variable that holds the address of another ...

  2. c语言memset清空指向数组的指针_C语言中数组和指针的关系

    数组的数组名其实可以看作一个指针.看下例: 1.    int array[10]={0,1,2,3,4,5,6,7,8,9},value; 2.    value=array[0]; //也可写成: ...

  3. bool c语言_C语言面试54题

    C语言面试54题 ​ 大家好,这期呢,我们谈一下c语言的面试题. 第1题,c语言有哪些核心的特征? 可移植性很强. 模块化能力很强. 灵活性很高. 加载速度和执行速度都很好. 可扩展性很强. 第2题, ...

  4. sdh管理单元指针_C语言学习|指针的介绍

    指针是C语言提供的一种特殊而又有非常重要的数据类型. 联合使用指针和结构体这两种数据类型可以有效地表示许多复杂的数据结构,如队列.堆栈.链表.树.图等. 指针这个内容为什么那么的重要? 1.指针为函数 ...

  5. 4、C语言面试笔试--内存操作-指针

    文章目录 1.指针变量 1.1 基本概念 1.2 指针运算 1.3 面试题 2. 常量和常量指针 2.1 字面常量和符号常量 2.2 const指针常量 2.2.1 常量指针 2.2.2 常量指针变量 ...

  6. c语言 指针_C 语言指针详解

    (给CPP开发者加星标,提升C/C++技能) 作者:C语言与CPP编程 / 自成一派123(本文来自作者投稿) 1为什么使用指针 假如我们定义了 char a='A' ,当需要使用 'A' 时,除了直 ...

  7. 动态二维数组外圈元素值的和_C语言 | 用指向元素的指针变量输出二维数组元素的值...

    例33:有一个3*4的二维数组,要求用C语言实现指向元素的指针变量输出二维数组个元素的值. 解题思路:二维数组的元素时整型的,它相当于整型变量,可以用int*型指针变量指向它.二维数组的元素在内存中是 ...

  8. c语言关于内存笔试,4、C语言面试笔试--内存操作-指针

    文章目录1.指针变量1.1 基本概念1.2 指针运算1.3 面试题2. 常量和常量指针2.1 字面常量和符号常量2.2 const指针常量2.2.1 常量指针2.2.2 常量指针变量2.2.3 指针常 ...

  9. 抽丝剥茧C语言(中阶)指针+练习

    初阶指针 导语 1. 指针是什么 2. 指针和指针类型 2.1 指针+-整数 2.2 指针的解引用 3. 野指针 3.1 野指针成因 3.2 如何规避野指针 4. 指针运算 4.1 指针+-整数 4. ...

最新文章

  1. Google开源新TensorFlow运行时TFRT,将取代现有进行时
  2. 移动端h5开发总结不断更新中....
  3. Jerry Wang一篇介绍ABAP调试心得的博客上了SAP社区的首页
  4. JDBC批量操作性能提升
  5. 【每日一题】7月7日题目精讲—最短路
  6. bzoj1934: [Shoi2007]Vote 善意的投票(最小割)
  7. RabbitMQ工作笔记-新建用户及创建虚拟主机
  8. JEECG(J2EE Code Generation) 基于代码生成器J2EE智能开发框架 杂记:发布新版本 JEECG_v2.0
  9. 截断正态分布(Truncated normal distribution)nn.init.trunc_normal_
  10. QT 010 Qt 4.2 在线手册含UML图解释 User's Guide Documentation
  11. 写一个简单的实时互动小游戏
  12. linux shell 遍历指定目录下的所有文件夹
  13. 数学建模论文写作模板
  14. 影子卫士和影子系统哪个好用_win7和win10系统哪个好用
  15. 分布式事务_实施分布式锁概述
  16. 【Linux】Linux操作的一些基本指令
  17. 微信小程序源码反编译
  18. #推书#——《那些回不去的年少时光》
  19. MySQL Explain用法及各字段详解
  20. java fx 文本输入,DOC-03-08 文本框(Text Field)

热门文章

  1. asp.net广告控件的使用
  2. 计算机解题报告,计算机题目33题(附带题解)精选.doc
  3. node.js知识点总结
  4. 混合app用百分比还是rem_如何用平板APP和手机APP控制混合音视频矩阵切换器
  5. 我们未能完成您的购买_销售完成后,客户的消极情绪产生的原因及处理方法
  6. Android开发之星期天数的实现与日期转星期几
  7. Android开发之百度地图定位以及简单覆盖物的实现
  8. Android Studio开发版(debug)和发布版(release)获取SHA1和MD5和SHA256的最原始方法
  9. 关于bufferKnife8.8.1点击事件无效的原因
  10. 哈工大计算机专研和学研的区别,哈工大教授发表SCI和核心期刊共26篇,发明专利6项,在交叉学科领域大放异彩!...