初级篇——指针(*)、取地址(&)、解引用(*)与引用(&)的区别
来源:互联网 发布:程序员三大浪漫 编辑:程序博客网 时间:2024/06/16 14:57
1. 初步了解——指针与取地址
先看程序:
上面int *p定义了一个指向int类型指针p(我们使用*符号把p声明为指针),并初始化p使其指向int类型的变量num,这里&num中的&是取地址操作符,当&作用于一个对象上时,它返回了该对象的地址。所以这里指针p指向了num所对应的地址。(我测试时输出了0028FF1C)
2. 如何使用指针?——解引用与指针赋值
让我们继续:
注意这里*操作符为解引用操作符,它返回指针p所指的对象(左值)。
我们可以对*p赋值(对左值赋值),从而改变p所指的地址上所保存的值,从而改变此地址所存储的变量num的值。(上面num的值变为100)
当然,我们也可以给指针p赋值,使其指向另外一个地址(这样就改变了在解引用时获取的左值):
3. 引用(引用概念在C++中才有,C中并没有)
从某种意义上来说,引用完全有别于上面说介绍的内容:
关键:作用在引用上的所有操作事实上都是作用在该引用所绑定的对象上。
可以用int *&refp = p;的方式将一个指针引用和一个指针绑定起来。
PS:如果还是不理解,可以把引用认为是一个对象的别名(外号、简称等等)。(类比#define ...,typedef ...)
答疑:使用引用有何优点?
在传参的时候,使用指针传参,编译器需要给指针另行分配存储单元,存储一个该指针的副本,在函数中对这个副本进行操作;而使用引用传参,编译器就不需要分配存储空间和保存副本了,函数将直接对实参进行操作。所以使用引用使得程序的运行速度更快,执行效率更高。
阅读全文
0 0
- 一、初级篇——指针(*)、取地址(&)、解引用(*)与引用(&)的区别
- 一、初级篇——指针(*)、取地址(&)、解引用(*)与引用(&)的区别
- 初级篇——指针(*)、取地址(&)、解引用(*)与引用(&)的区别
- 指针(*)、取地址(&)、解引用(*)与引用(&)的区别
- C/C++【初级】之一 指针(*)、取地址(&)、解引用(*)与引用(&)的概念
- 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别 (完整代码)
- 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别 (完整代码)
- 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别
- 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别 (完整代码)
- 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别 (完整代码)
- 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别
- 指针与引用,取地址符与解引用符
- C++ 引用 解引用 取地址 指针 双指针 指针的引用 二级指针
- 引用 与 取地址 以及指针的关系
- 引用 与 取地址 以及指针的关系
- 引用 与 取地址 以及指针的关系
- 引用与取地址有什么区别?
- C++中 引用&与取地址&的区别
- NOIP 2017.10.23 总结+心得
- sscanf
- C++之模板篇
- java之多态
- codeforces——875A —— Classroom Watch
- 初级篇——指针(*)、取地址(&)、解引用(*)与引用(&)的区别
- url类型
- 亲,还在为传输文件发愁吗?
- mybatis
- leetcode 96. Unique Binary Search Trees
- Android 开发 打印出intent 的key和value
- leetcode 665. Non-decreasing Array
- AngularJS敏感词过滤,下拉菜单排序,表格隔行换色,添加数据
- (4) Eureka原理分析