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

如题所述

引用(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:
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-12
C语言没有引用啊,C++才有.

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

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

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

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

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

还有,引用一旦声明,就不能再修改到其他变量上了,这与指针不同。
ra = b; //这是不行的,因为已经int &ra = a了
第2个回答  推荐于2017-05-20
你们能不能能给楼主一个自己的看发?
引用,是C++的内容,他是在C语言指针的基础上优化得来的,说到引用就不得不说到C中指针的缺点,因为指针可以指向任意的内存单元包括系统所在的内存,如果指针恰好指在系统的内存位置,那么一旦你给该指针赋值了那么系统就会面临崩溃,所以用指针要很小心,很多程序方面的专家建议取消指针,但指针的优点确实是很可观的,因此为了解决这个问题,引用就诞生了,引用就等于给变量起了另一个名字,这样你在用引用名的时候就等于在使用该变量本身,引用实际上也是地址传递,因为引用名和变量用的是同一个内存。
不知道这样说楼主能否理解!本回答被网友采纳
第3个回答  2013-10-12
引用简介
  引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。
  引用的声明方法:类型标识符 &引用名=目标变量名;
  【例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。
  注意:学会这种分析方法,把什么看成一体,又把什么看成一体

c语言问题,什么叫引用啊?
引用(reference)是c++对c语言的重要扩充。一、引用的概念 引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。例如: Point pt1(10,10);Point &pt2=pt1; 定义了pt2为pt1的引用。通过这样的定义,pt1和pt2表示同一对象。需要特别强调的是引用并不产生对象的副本,...

请问c语言中引用怎样理解
引用的理解如下:引用能起到指针的部分作用,比指针安全。引用可以看作是某个变量的一个别名。对引用进行操作就像对原变量进行操作一样。主要用于函数的参数传递时使用。需要改动参数,直接传递一个变量过去即可。在操作符重载中有更重要的意义。

c语言中什么叫引用?
引用(reference)是c++对c语言的重要扩充。引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*,例如: Point pt1(10,10)。Point &pt2=pt1;,定义了pt2为pt1的引用。通过这样的定义,pt1和pt2表示同一对象。需要特别强调的是引用并不产生对象的副本,仅仅是对象的同...

请问c语言中引用怎样理解?
因此,引用在C语言中是一种强大的工具,它允许我们间接修改原变量的值,但同时保持对原值的直接访问。

C语言引用详解
1、基本概念 引用(reference)在C++中是对C语言的重要扩展。引用可以理解为变量的别名,它与目标变量共享同一内存空间。引用的声明方法为:类型标识符 &引用名=目标变量名。如同林冲的别名"豹子头",引用同样为变量提供了一个新的名称。2、区分 在C++中,"&"可以表示取地址操作符,但当它位于类型和...

C语言中引用指的是什么,举个例子
C语言里面没有引用的说法,只有C++里面有。C++里引用就是给变量定义一个别名,操作这个别名就是操作原变量。比如,我们定义一个引用:int a=10; \/\/定义一个普通变量int &ref=a; \/\/定义一个变量a的引用ref=20; \/\/这里对ref进行操作其实就是对a进行操作变量主要是在参数传递的时候非常有...

请问c语言中引用怎样理解?
是引用类型吗?C语言中没有引用类型,引用类型是C++的,意思是为已有变量起一个别名。如int a,&b=a;,就定义了b是变量a的别名。通俗点说,可以理解为a、b是同一个变量的不同符号而已。

c语言里一般都说引用而不说使用,引用和使用有什么区别呢
引用是C++里面的概念,就是给一个变量起一个别名。比如说 int a=10;int b=&a; \/\/这里b就是a的一个别名,以后a=b;b = 5; \/\/此时a也等于5 引用的一个应用是参数传递,C语言里面要想通过函数改变值只能通过指针。如果用引用就很容易。比如:f(int &a)int c = 10;f(c);在f...

c语言中的&是什么意思?
1、引用:引用(reference)就是C++对C语言的重要扩充。引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。2、按位与:&可以表示逻辑运算...

C语言中指针和引用的区别
引用,是C++中提出来的一种新的使用变量的方式,即,给实际变量起个别名,通过这个别名来引用实际的变量。标准C中不支持变量的引用。这两个概念没有任何相关性。指针是实实在在的变量,有自己的内存存储空间,它可以指向任何有效的变量。引用是一种形式、方法,定义的引用变量,实际上是原实际变量的另...

相似回答