问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言问题,什么叫引用啊?

发布网友 发布时间:2022-04-22 03:27

我来回答

4个回答

热心网友 时间:2022-04-27 19:13

引用(reference)是c++对c语言的重要扩充。
  一、引用的概念
  引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。
  例如: Point pt1(10,10);
  Point &pt2=pt1; 定义了pt2为pt1的引用。通过这样的定义,pt1和pt2表示同一对象。
  需要特别强调的是引用并不产生对象的副本,仅仅是对象的同义词。因此,当下面的语句执行后:
  pt1.offset(2,2);
  pt1和pt2都具有(12,12)的值。
  引用必须在定义时马上被初始化,因为它必须是某个东西的同义词。你不能先定义一个引用后才
  初始化它。例如下面语句是非法的:
  Point &pt3;
  pt3=pt1;
  那么既然引用只是某个东西的同义词,它有什么用途呢?
  下面讨论引用的两个主要用途:作为函数参数以及从函数中返回左值。
  二、引用参数
  1、传递可变参数
  传统的c中,函数在调用时参数是通过值来传递的,这就是说函数的参数不具备返回值的能力。
  所以在传统的c中,如果需要函数的参数具有返回值的能力,往往是通过指针来实现的。比如,实现
  两整数变量值交换的c程序如下:
  void swapint(int *a,int *b)
  {
  int temp;
  temp=*a;
  a=*b;
  *b=temp;
  }
  使用引用机制后,以上程序的c++版本为:
  void swapint(int &a,int &b)
  {
  int temp;
  temp=a;
  a=b;
  b=temp;
  }
  调用该函数的c++方法为:swapint(x,y); c++自动把x,y的地址作为参数传递给swapint函数。
  2、给函数传递大型对象
  当大型对象被传递给函数时,使用引用参数可使参数传递效率得到提高,因为引用并不产生对象的
  副本,也就是参数传递时,对象无须复制。下面的例子定义了一个有限整数集合的类:
  const maxCard=100;
  Class Set
  {
  int elems[maxCard]; // 集和中的元素,maxCard 表示集合中元素个数的最大值。
  int card; // 集合中元素的个数。
  public:
  Set () {card=0;} //构造函数
  friend Set operator * (Set ,Set ) ; //重载运算符号*,用于计算集合的交集 用对象作为传值参数
  // friend Set operator * (Set & ,Set & ) 重载运算符号*,用于计算集合的交集 用对象的引用作为传值参数
  ...
  }
  先考虑集合交集的实现
  Set operator *( Set Set1,Set Set2)
  {
  Set res;
  for(int i=0;i<Set1.card;++i)
  for(int j=0;j>Set2.card;++j)
  if(Set1.elems==Set2.elems[j])
  {
  res.elems[res.card++]=Set1.elems;
  break;
  }
  return res;
  }
  由于重载运算符不能对指针单独操作,我们必须把运算数声明为 Set 类型而不是 Set * 。
  每次使用*做交集运算时,整个集合都被复制,这样效率很低。我们可以用引用来避免这种情况。
  Set operator *( Set &Set1,Set &Set2)
  { Set res;
  for(int i=0;i<Set1.card;++i)
  for(int j=0;j>Set2.card;++j)
  if(Set1.elems==Set2.elems[j])
  {
  res.elems[res.card++]=Set1.elems;
  break;
  }
  return res;
  }
  三、引用返回值
  如果一个函数返回了引用,那么该函数的调用也可以被赋值。这里有一函数,它拥有两个引用参数并返回一个双精度数的引用:
  double &max(double &d1,double &d2)
  {
  return d1>d2?d1:d2;
  }
  由于max()函数返回一个对双精度数的引用,那么我们就可以用max() 来对其中较大的双精度数加1:

热心网友 时间:2022-04-27 20:31

C语言没有引用啊,C++才有.

引用能起到指针的部分作用,但是比指针安全.

一个引用可以看作是某个变量的一个"别名"。对引用进行操作就像对原变量进行操作一样。

主要用于函数的参数传递时使用。因为C语言没有类似VB的“传引用调用”这个功能,所以C++的引用填补了这个空白。从此即使需要改动参数,也直接传递一个变量过去即可。这在操作符重载中有更重要的意义。等你学到以后才会明白。

int a; //声明变量a
int& ra = a; //声明一个引用,名字是ra,ra引用了a

注意,ra声明的时候必须同时给出它到底引用了谁
int& ra; //只声明不指明是不对的。

还有,引用一旦声明,就不能再修改到其他变量上了,这与指针不同。
ra = b; //这是不行的,因为已经int &ra = a了

热心网友 时间:2022-04-27 22:05

你们能不能能给楼主一个自己的看发?
引用,是C++的内容,他是在C语言指针的基础上优化得来的,说到引用就不得不说到C中指针的缺点,因为指针可以指向任意的内存单元包括系统所在的内存,如果指针恰好指在系统的内存位置,那么一旦你给该指针赋值了那么系统就会面临崩溃,所以用指针要很小心,很多程序方面的专家建议取消指针,但指针的优点确实是很可观的,因此为了解决这个问题,引用就诞生了,引用就等于给变量起了另一个名字,这样你在用引用名的时候就等于在使用该变量本身,引用实际上也是地址传递,因为引用名和变量用的是同一个内存。
不知道这样说楼主能否理解!

热心网友 时间:2022-04-27 23:57

引用简介
  引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。
  引用的声明方法:类型标识符 &引用名=目标变量名;
  【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名
  说明:
  (1)&在此不是求地址运算,而是起标识作用。
  (2)类型标识符是指目标变量的类型。
  (3)声明引用时,必须同时对其进行初始化。
  (4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。
  ra=1; 等价于 a=1;
  (5)声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。故:对引用求地址,就是对目标变量求地址。&ra与&a相等。
  (6 ) 不能建立数组的引用。因为数组是一个由若干个元素所组成的集合,所以无法建立一个数组的别名.
  (7)不能建立引用的引用,不能建立指向引用的指针。因为引用不是一种数据类型,所以没有引用的引用,没有引用的指针。
  例如:
  int n;
  int &&r=n;//错误,编译系统把"int &"看成一体,把"&r"看成一体,即建立了引用的引用,引用的对象应当是某种数据类型的变量
  int &*p=n;//错误,编译系统把"int &"看成一体,把" *p "看成一体,即建立了指向引用的指针,指针只能指向某种数据类型的变量
  (8)值得一提的是,可以建立指针的引用
  例如:
  int *p;
  int *&q=p;//正确,编译系统把" int * "看成一体,把"&q"看成一体,即建立指针p的引用,亦即给指针p起别名q。
  注意:学会这种分析方法,把什么看成一体,又把什么看成一体
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...啊?我从嘴里吐出去是直的算过肺了吗?我不会从鼻子里出去_百度... 恶心呕吐是什么? 高考数学大题应注意哪些问题呢? 高考数学可不可以用高等数学啊 高考数学 基础知识点 常见考查方式 高考数学考什么内容 一般纳税人如何交所得税 以前的QQ忘记密码了那时候不要了就不找回密码了,现在想找回来,但是又没... 常州机场坐飞机流程 常州机场大巴时刻表 ...我早上九点起飞的飞机, 然后我这的机场快线大巴到机场时70分钟,_百 ... c++中引用的好处有什么呢 - C / C++ - 说明c语言程序中变量的作用域及存储位置。 c++中的引用(&)到底都有什么用处? 请问c语言中引用怎样理解? 引用型变量 c/c++ C语言中为什么有变量?变量有什么用? c语言中变量是干什么用的 怎样知道QQ好友是否被人拉黑或删除? 怎么分辨对方把我qq拉黑还是删除好友了 如何用苹果手机传资料 问什么用了韩束紫竹平衡系列 刚刚可是用有点刺痛 ... 韩束紫竹洗面奶好少额,在超市买了一套四件套,刚... 韩束紫竹控油 用过之后 脸上为什么特干 特紧 起干... 护肤品韩束紫竹套装好用吗?多少钱一套 韩束紫竹是不是温和的 混合型皮肤用韩束墨菊的还是紫竹的 最近买了一套韩束紫竹的护肤品,可是用了几天,好... 十五岁女生皮肤油鼻子有痘痘用韩束紫竹细肤平衡水... 有哪些学生党可以入手的平价好用的补水护肤品? 我20岁,毛孔粗大容易长痘痘,又是草莓鼻,好多黑... c语言中什么叫引用? 在c语言中什么是变量的作用域 c语言变量引用 如何在c语言中定义及引用全局变量? 工行信用卡手机怎么取现 工行信用卡能用手机提现吗? 工行信用卡可以提现吗 工商银行信用卡可以取现金吗 工商银行信用卡溢缴款柜台取现限额是多少? 工商银行信用卡可以取现金吗 手续费高吗 比特币是谁发明的 ekt和鸿星尔克有关系吗 比特币创始人真实身份揭晓 比特币创始人是谁 比特币与以太坊他们创始人是谁? EKT是什么品牌 传说中比特币的创始人是谁 比特币的创始人是谁? 火币创始人是谁? DK币的创始人是谁? 异刹创始人是谁?