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

C语言中引用指的是什么,举个例子

发布网友 发布时间:2022-04-25 14:46

我来回答

2个回答

懂视网 时间:2022-04-27 22:05


引用类型也称别名,它是个很有趣的东西。在c++ 下你可以把它看作是另外的一种指针,通过引用类型我们同样也可以间接的操作对象,引用类型主要是用在函数的形式参数上,通常我们使用它是把类对象传递给一个函数。

  引用对象采用类型名加上&符号和名称的方式进行定义。例如:(int &test;),这里我们就定义了一个int类型的名为test 的引用,但是int &test;这样的方式是不能够被编译成功的,因为引用的定义必须同时给应用进行赋值操作,这里的赋值并不是说把变量的值传递给引用,而是把引用指向变量,写成这样就对了:(int &test=变量名;)。

#include <iostream
using namespace std; 

void main(void


int a=10; 
int &test=a; 
test=test+2; 

cout << &a << "|" << &test << "|" << a << "|" <<test << endl; 

cin.get(); 
}

  观察并编译运行上面的代码你会发现&a和&test的地址显示是相同的,a和test的值显示也是一样的!

  结合前一个教程的内容我们来说一下const引用的相关内容,这里要特别注意,和前一个教程一样带const修饰的引用同样也容易混淆概念!

  const修饰如果用在引用上会有一个特别之处,它的奥妙就在于可以进行不同类型的对象的初始化,而这一切在普通变量操作上是不可能的下面我们来看一个例子:

#include <iostream
using namespace std; 

void main(void


int a=10; 
//double &test = a + 1.2f; //这句就是错误的! 
const double &test = a + 1.2f; 

cout << &a << "|" << &test << "|" << a << "|" <<test << endl; 

cin.get(); 
}

  上面的代码足够说明问题了,这就是const修饰带来的好处,但是聪明的人会在输出的时候发现一个问题,就是a和test的值的输出不同,按照最先说的道理应该可以改变a的值呀,为什么在这里却有没有能够改变呢?

  道理是这样的,const修饰过后的引用在编译器内部是这样进行变化的。

int a=10; 
const double &test = a + 1.2f;

  这样的一段代码在编译器认为却是下面的方式进行的

int a=10; 
int temp = a; 
const double &test = temp + 12.f

  这里其实是把a的值赋给了一个临时temp 变量而后test获得的却是temp+12.f 改变的是temp而不是a,所以就出现了a和test显示的值不同的情况,这里要特别注意,这是一个很容易混淆的地方,在编写程序的时候要特别仔细,以免出现了问题却检查不出为什么

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

C语言里面没有引用的说法,只有C++里面有。C++里引用就是给变量定义一个别名,操作这个别名就是操作原变量。

比如,我们定义一个引用:

int a=10;      //定义一个普通变量
int &ref=a;    //定义一个变量a的引用
ref=20;        //这里对ref进行操作其实就是对a进行操作

变量主要是在参数传递的时候非常有用,当你的函数参数是一个值参数的时候,我们一般的做法是传递一个指针进去,这样就导致我们在函数里操作的都是指针,这样其实很不方便,如果使用引用的话就可以非常方便。

比如定义一个参数是引用的函数

void func(int &b)
{
    b++;
}
//调用
int a=100;
func(a);      //调用的时候直接传递参数进去

上面的方式可以实现和指针一样的效果,但是更加方便

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
远得要命的爱情丁菲是谁演的 远的要命的爱情里的乔佳影是谁演的 远得要命的爱情乔佳影是什么角色 问。。我在厦门办的银行卡回江西可以用吗? 远得要命的爱情中的乔佳影是个怎样的人 厦门农信社的公告出来了,想问一下银行合同制和劳务派遣和正式工的区别... 厦门的信用社银联卡到南宁能不能用?要不要手续费? 泉州农信社年前新办的卡,存了钱,银行说三个工作日后才能动这个钱,为什 ... ...女鞋的话 是不是必须直通车 我们鞋子都是20---50鞋子利润低 直通车... 拼多多直通车200红包(拼多多直通车每天烧1000) 好听的男生单字? 和男朋友两天不联系正常吗 男朋友几天不联系你说明什么 男朋友两天不联系我正常吗 男友两天不联系正常吗? 男朋友两天没跟我联系 男朋友两天没联系过我了,这是什么情况? 男友突然两天没联系我了,我要不要主动联系他?我们是异地恋,两三个月没有见面了 打印彩色名片使用什么打印机?价格是多少? 男朋友因为忙,两三天不联系,不聊天 还要不要继续? 想自己打印名片,打印机是激光的好呢还是喷墨的好呢? 男友俩天不联系说明什么? 男友两天不联系是不是默认分手? 男友两天不联系我了,我要找他吗 男朋友超过两天不联系你也不发信息该怎么办是啷个回事 不管什么原因,男友几天不联系算分手? 男朋友天天联系我,突然两天不联系了,啥情况啊? 请问制作名片需要什么样的打印机? 男人2天不联系你正常吗? 打印名片用哪款打印机比较好? C语言中引用及指针和引用的联系与区别 4000个好听的男孩名字单字 c语言里一般都说引用而不说使用,引用和使用有什么区别呢 有什么男生的名字比较好听的,一个字的,有吗? C语言如何表示C++中的引用&? 请问C++中的引用符号“&”到底怎么使用? c语言的引用 郭姓男孩,求单字名字,好听,大气,顺口 C语言 字符变量的引用 (在线等)请赐名一个 男孩姓蒋单字名 C语言*和&的引用? c语言的符号和引用问题 C语言的引用问题 c语言如何 实现 c++中引用&的功能? c引用外部函数 c语言引用问题 属蛇的几月的生日最好 属蛇的几月出生好 属蛇男几月出生最富贵 属蛇的生日几月几日什么辰好