参考于https://blog.csdn.net/wtzdedaima/article/details/78377201

C语言也学了蛮久的,其实一直都没有用到过或者碰到过引用的例子。前端时间再全面复习C的基础知识,看到引用这一块,发现两者的还是有一些差别的,抱着我不用,万一别人用我也需要看懂的原则,仔细观察研究了两者的区别。

一下内容为转载:

引用:引用是一个变量的另一个名字,又称别名。定义方式: 
int a=10; 
int &b=a;在这里,意思就是给a变量起了一个新名字b,因此b不可再次被重新定义。 
引用必须初始化,无空引用,并且引用不分等级。 
引用与指针的异同点: 
相同点:在引用中 int &b=a;这一句代码可被编译器看做int * const b=&a;//加上const的作用是表明指针b的自身的值(a的地址)不能改变,而指向的值(a的值)可以改变。也就是说引用相当于指针,引用与指针在编译时的方法一样,指向的都是变量的内存地址。 
不同点:1.在定义方式中引用储存的是值,而指针是一个变量的拷贝,存储的是地址。 
2.引用只能对已经存在的变量或对象实现引用,而指针则不需要,可以定义为空。 
3.在函数的传参中,如果传递的是一个引用,意味着这个变量或对象已经存在了;如果传递的是一个指针,则不能判断这个指针是不是有效的,是不是空的,因此在函数体 中大多数都得进行指针是否为空的判断。但是虽然引用较为安全,但是利用指针来传参效率较快。 
4.引用是直接访问变量,不用分配自己的内存空间,而指针是间接访问,需要定义,需要有自己的内存空间。 
例:交换函数swap()

void swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
void main()
{
int x=10,y=20;
swap(x,y);
}

等价指针为:

void swap(int *const a,int *const b)
{
int tmp=*a;
*a=*b;
*b=temp;
}
void main()
{
int x=10,y=20;
swap(&x,&y);
}

最新文章

  1. SQLite 预写式日志
  2. ElasticSearch 命令行管理工具Curator
  3. [LeetCode] Add Two Numbers
  4. (Forward) Music Player: From UI Proposal to Code
  5. C# winform 窗体 彻底退出窗体的方法
  6. JVM调优总结(七)-典型配置举例1
  7. UITableView的常用方法与示例
  8. jqGrid添加自定义按钮
  9. iOS开发之监听键盘高度的变化 分类: ios技术 2015-04-21 12:04 233人阅读 评论(0) 收藏
  10. JQ.ajax 各种参数及属性设置 ( 转载 )
  11. 习题9-6 uva 10723
  12. POST不同提交方式对应的Content-Type,及java服务器接收参数方式
  13. org.springframework.dao.InvalidDataAccessResourceUsageException: Unexpected cursor position change. Spring Batch 错误
  14. 数组去重--ES5和ES6
  15. day 5 - 1 字典(dict)
  16. CSS 使用技巧
  17. .NET Memory Allocation Profiling with Visual Studio 2012
  18. 浏览器从输入URL到页面加载显示完成全过程解析
  19. 【开发工具】 JEECG_3.7新版开发工具
  20. redis命令手册

热门文章

  1. django_models_Meta字段详解
  2. web10 动态action的应用
  3. ORACLE_SQL
  4. 配置树莓派/Linux默认声卡设备
  5. Journal entry of the eleventh chapter to chapter twelfth
  6. (小组)第六次作业:NABCD模型分析。产品Backlog。
  7. Java集合技巧
  8. ResourceBundle类读取properties文件
  9. 简单复利计算c语言实现
  10. sys下gpio操作