问答文章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);      //调用的时候直接传递参数进去

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

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

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

请问C语言中的"."、"*"、"-&gt;"、"&amp;"都有什么作用和区别?

你好!!!1.‘.’是使用对象的成员(数据成员或是函数承成员.)举个例子:struct A//结构体 { int x;int y;};A a,定义一个结构体变量a,那么此时要想使用变量x,那么那就可以用:a.x,就可以使用x的值了。要是定义结构体指针变量即:A *a,那么要是使用使用变量x,就得:a-&gt;x,就可以使用...

在C语言中,“::”是什么?

-&gt;是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“-&gt;”.举个例子:struct Data { int a,b,c;}; /*定义结构体*/ struct Data...

c语言中 -&gt;这个符号什么意思?例如,p-&gt;n 什么意思?

在c语言中,-&gt;是与指针配对使用的,而这个指针通常指向的是一个数据结构,再通过-&gt;符号来获取 该数据结构中的成员数据。举个例子:struct test { // 先声明一个数据结构 int n;int m;};struct test t; // 定义一个该结构的变量 struct test *p; // 定义一个该结构的指针 p = &amp;t; // ...

请问大家,在c语言中,调用函数和被调用函数分别是什么啊?

这两个定义是相对的。。。比如说你自己定义编写了一个函数,然后在后面的编写语句中要用到你之前编写的函数。。你引用了。。那个函数就是被调用函数。。你正在写的那个主函数就是调用函数。。...void try(int x,int y,int z){ ...} main(){ int x,y,z ...try(x,y,z)...} 函数try...

C语言和C++中的::和-&gt;是什么意思?

-&gt;是箭头操作符,设计它的目的是为了简化输入,以及增强程序的可读性的 -&gt;的功能相当于解引用操作符*和成员调用操作符.的组合体 例如:class C { static int a;} 访问a就可以使用C::a来访问,表明这个变量a具有类C的作用域。它在该类内可见。了解更多,那么namespace就是个很好的例子。另外。cla...

C语言中二维数组的引用和地址有什么区别吗?比如a[i]地...

要引用数组中各个元素。a[i]是数组专用的方法,它本身就是指a往后偏移i个长度内存空间里存放的内容,因此用&amp;取地址就变成了该内容对应的地址;也可以用*(a+i),a+i指从地址a偏移i个长度(此长度不是字节,取决于数组存储的元素类型)的地址(注意此时它不是指里面的内容),因此加上*以取到里面的内容。也就是说a...

在c语言中,“-&gt;”是什么意思?也是指针的意思?可不可以举个例子说明一...

(-&gt;)用来表示指向对象的指针的成员,表示数据成员 (·)用来表示一般对象的成员,表示成员函数。例如:(1)Pdate-&gt;year, Pdate-&gt;month, Pdate-&gt;day;或者 (*Pdate).year, (*Pdate).month, (*Pdate).day;(2)Pdate-&gt;SetDate(int y, int m, int d);或者 (*Pdate).SetDate(int y, ...

C语言指针问题:用指向指针的指针方法对n个整数排序并输出。要求将排序单...

首先,要说明的是:数组名,是一个指针,它指向存放数组元素的一块内存区域,那么数组元素是怎么被引用的呢,我举个例子。如a[3],编译系统会首先找到这个数组的首地址,即a,然后根据〔〕中的值确定地址偏移量,即3,由此便确定了,要引用的元素是地址a+3所指向的单元的内容。你知道〔〕叫什么吗?

C语言中取内容运算

p = c;左右就都是int *;--- 如果你已经能区分类型了,那么认识指针的本质也就不难了。指针其实就是一个整数,记录了另一个变量在内存中的位置。他本身也是一个变量,所也也能赋值。为了引用他指向的变量,我们在外边加一个*标记。为了获得一个变量本身的地址,我们在外边加&amp;标记。如果什么标记都...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
沉香种子能否食用 求大神回答 这个是不是沉香苗 淘宝买的 5斤种子一千多块 沉香种子有什么用 超凡脱俗 《?西游》人物飞升材料获取攻略 啥不能跟螃蟹一起吃 螃蟹不能个啥一起吃 世博会志愿者网上报名 申请世博会志愿者填注册信息的问题 世博会志愿者报名遇到的错误 急用!上面一个雨,下面两个禾,念什么? 好听的男生单字? 和男朋友两天不联系正常吗 男朋友几天不联系你说明什么 男朋友两天不联系我正常吗 男友两天不联系正常吗? 男朋友两天没跟我联系 男朋友两天没联系过我了,这是什么情况? 男友突然两天没联系我了,我要不要主动联系他?我们是异地恋,两三个月没有见面了 打印彩色名片使用什么打印机?价格是多少? 男朋友因为忙,两三天不联系,不聊天 还要不要继续? 想自己打印名片,打印机是激光的好呢还是喷墨的好呢? 男友俩天不联系说明什么? 男友两天不联系是不是默认分手? 男友两天不联系我了,我要找他吗 男朋友超过两天不联系你也不发信息该怎么办是啷个回事 不管什么原因,男友几天不联系算分手? 男朋友天天联系我,突然两天不联系了,啥情况啊? 请问制作名片需要什么样的打印机? 男人2天不联系你正常吗? 打印名片用哪款打印机比较好? C语言中引用及指针和引用的联系与区别 4000个好听的男孩名字单字 c语言里一般都说引用而不说使用,引用和使用有什么区别呢 有什么男生的名字比较好听的,一个字的,有吗? C语言如何表示C++中的引用&? 请问C++中的引用符号“&”到底怎么使用? c语言的引用 郭姓男孩,求单字名字,好听,大气,顺口 C语言 字符变量的引用 (在线等)请赐名一个 男孩姓蒋单字名 C语言*和&的引用? c语言的符号和引用问题 C语言的引用问题 c语言如何 实现 c++中引用&的功能? c引用外部函数 c语言引用问题 属蛇的几月的生日最好 属蛇的几月出生好 属蛇男几月出生最富贵 属蛇的生日几月几日什么辰好
  • 焦点

最新推荐

猜你喜欢

热门推荐