比较以下两个代码

(1)
#include<stdio.h>
#include<stdlib.h>
void turn(int x, int y)//无引用
{
        int t;
        t = x;
        x = y;
        y = t;
}
int main()
{
    int a, b;
    scanf_s("%d%d", &a, &b);
    turn(a, b);
    printf("%d %d\n",a,b);
    system("pause");
    return 0;
}

(2)
#include<stdio.h>
#include<stdlib.h>
void turn(int &x, int &y)//有引用
{
        int t;
        t = x;
        x = y;
        y = t;
}
int main()
{
    int a, b;
    scanf_s("%d%d", &a, &b);
    turn(a, b);
    printf("%d %d\n",a,b);
    system("pause");
    return 0;
}

结论: 
说白了引用&就是别名(你的小名,指的是同一个你),如果程序对引用做出改动,其实就是对目标的改动。 
当用执行语句trun(&a,&b)时,实参a和b的值发生了交换,如果turn函数的形参不用引用类型,这样调用时,由于c/c++采用实参到形参的单向值传递,所以实参a和b的值并不发生任何改变
--------------------- 
原文:https://blog.csdn.net/zwxlyg/article/details/72857547

引用:引用是一个变量的另一个名字,又称别名。定义方式: 
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);
}1234567891011

等价指针为:

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);
}
---------------------

原文:https://blog.csdn.net/wtzdedaima/article/details/78377201

c语言关于引用的使用相关推荐

  1. 在c语言中引用数组元素时,其数组下标的数据类型允许是什么

    在c语言中引用数组元素时,其数组下标的数据类型允许是:整型常量或整型表达式.C语言规定只能逐个引用数组元素而不能一次引用整个数组,数据元素的表示形式为"数组名[下标]",下标可以是 ...

  2. 【C++ 语言】引用 ( 引用简介 | 指针常量 | 常量指针 | 常引用 | 引用参数 | 引用 指针 对比 )

    文章目录 I . 引用概念 II . 引用声明 III . 引用 地址 内存 分析 IV . 常引用 V . 引用作为参数 VI . 引用 与 指针 对比 I . 引用概念 C++ 对 C 扩充 : ...

  3. 【C++ 语言】引用数据类型 ( 引用数据类型定义 | 引用数据类型使用 | 引用类型参数 )

    文章目录 引用类型 引用类型 引用数据类型 : 1. 引用数据类型定义 : 类型名称& 变量名 = 对应类型变量名称 ; //① 定义 普通 类型 变量int a = 8;//② 定义 引用类 ...

  4. C语言没有引用,只有指针

    这个问题是昨晚上有同学在知识星球提问,但是因为前两天一直在出差,比较累,没认真回答,今天打球回来,就把这个事情解决了. 我想说的已经在题目说明的很清楚了,C语言是没有引用的,引用是在C 里面才存在的神 ...

  5. 易语言如何引用模块和模块中的类

    1,打开易语言,新建一个"windows窗口程序",工作夹→程序→双击"模块引用表",选择欲加入的易模块文件,打开即可. 2,双击模块,可看到易模块公开信息.模 ...

  6. C语言中有引用吗?reference

    c语言中,没有reference的概念.这是c规范中规定.c规范链接? 为什么大家会认为C语言会有引用的概念呢? c++中有引用这个概念,含义是变量的别名. 在cpp文件中,支持以c形式写代码.因而导 ...

  7. 引用的使用方法c语言,C语言中引用的用法

    引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样.引用的声明方法:类型标识符 &引用名=目标变量名:[例1]:int a; int &ra=a; //定义引用r ...

  8. c 语言中引用的作用是什么,C语言为什么开头都加;#includestdio.h有什么作用?...

    慕少森 stdio.h 哪些 是 头文件,里面包含一些常用的 函数例如 stdio.h里面有 scanf();printf()这些函数,没有stdio就不能用这些函数在C语言家族程序中,头文件被大量使 ...

  9. c语言中 引用的作用,阅读理解中古诗词引用的作用

    文章中引用古诗词的作用是什么 展开全部 作为一种常见修辞方法,通过在文章中有意引用诗句.名人事例.格言等,来表达自己的思想感情或看法. 它的作用主要包括:1.可使所表达的语言意思简洁凝练,增添感染力, ...

  10. c语言指针引用数组元素,c语言——数组指针和通过指针引用数组元素的方法总结...

    1.数组指针:即指向数组的指针 那么, 如何声明一个数组指针呢? int (* p)[10]; /*括号是必须写的,不然就是指针数组:10是数组的大小*/ 1 拓展:有指针类型元素的数组称为指针数组. ...

最新文章

  1. (转自Timon's wang blogs)C#实现web信息自动抓取
  2. 独家 | 谷歌医学AI在生活中的精确度(附链接)
  3. Pytorch固定随机性
  4. python网上授课_python完整课程
  5. 信息系统项目管理师:第8章:项目质量管理-章节真题+解析
  6. 组合模式_设计模式结构性:组合模式(CompositePattern)
  7. 飞畅 Profibus总线光纤中继器产品介绍
  8. 龙芯2h芯片不能进入pmon_“龙芯”18年:这个团队,终结了中国计算机产业的“无芯”历史...
  9. iTunes“解决方案”发展历程及研究(上)
  10. SQL Server2008数据库管理 (第二部分)
  11. C/C++——各种类型int、long、double、char表示范围(最大最小值)
  12. 第十五讲 循环体for基础
  13. 银行排队问题之单队列多窗口服务 (25 分)(结构体排序)
  14. Echarts地图动效制作
  15. 仿映客直播礼物特效制作流程
  16. python如何截长图_python如何实现对元素的长截图功能 python实现对元素的长截图功能实例...
  17. 各种泵的图形符号_泵的图形符号
  18. mac系统重置Mysql密码
  19. 洛谷 P2517 [HAOI2010]订货
  20. 使用QT实现Mjpeg-streamer的客户端,采用单独的线程进行视频图片的获取

热门文章

  1. linux UDP实现广播和组播
  2. 珍藏已久的6个资源网站,每天让你不愁找不到资源,你值得拥有
  3. Gatsby中怎么在组件中使用css?
  4. S32 Design Studio(S32DS) 如何打开已有工程以及无法打开工程问题解释
  5. 将 .eml 后缀的文件以邮件形式发送
  6. LAA中信道接入机制(LBT)
  7. 牛客练习赛27 B 手办
  8. 送餐机器人 | 美格智能5G智能模组助力无人送餐“如有神助”
  9. 虚拟机VMware Workstation 7.1.4官方原版下载+激活密钥+汉化补丁
  10. boost的libboost_system问题 undefined reference to `boost::system::generic_categor