什么是C++引用

技术什么是C++引用这篇文章主要介绍“什么是C++引用”,在日常操作中,相信很多人在什么是C++引用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是C++引用”的疑惑有所帮助!接下来,

本文主要介绍“什么是C参考”。在日常操作中,相信很多人对什么是C参考都有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮助大家解决“什么是C参考”的疑惑!接下来,请和边肖一起学习!

一、C++ 引用

变量名本身是一段内存的引用,也就是别名。这里介绍的引用是现有变量的别名。

声明如下

intmain()

{

inta

int b=a;

}

1.规则

1.没有定义引用,它是一个关系声明。声明它与原始变量的关系。类型与原类型一致,不分配内存。与引用的变量具有相同的地址。

2.声明时必须初始化,一旦声明,就不能更改。

3.你可以再参考一下。多次引用的结果是一个变量有多个别名。

4.如果符号前面有数据类型,则它是引用。其他人在记地址。

#包括牡蛎

使用命名空间TD;

intmain()

{

inta,b;

intr=a;

int r=b;//错误,原引用关系不能更改。

float RR=b;//错误,引用类型不匹配。

coutarendl//变量与引用的地址相同。

帧内=r;//可以多次引用引用,这意味着一个变量有两个别名,即r和ra。

}什么是C++引用

2.应用

1.值作为函数参数。

voidswap(inta,intb);//无法实现两个数据的交换。

voidswap(int*p,int * q);//打开两个指针空间,实现交换。2.作为函数参数的引用。

#包括牡蛎

使用命名空间TD;

voidswap(inta,intb){ 0

inttmp

tmp=a;

a=b;

b=tmp

}

int main(){ 0

inta=3,b=5;

cout 'a=' a 'b=' bendl

互换(a、b);

cout 'a=' a 'b=' bendl

返回0;

}什么是C++引用

在c语言中引入引用后,可以用引用解决的问题。避免使用指针解决问题。

00-1010引用的本质是指针,C将暴露的内存地址(指针)包装一次。获得了指针的优良特性。因此,寻址引用并建立指向该引用的指针是没有意义的。

3.引用提高

inta;

int * p=a;

int * RP=p;//好的

intr=a;

intrr=n

bsp;r;//error

例子:

#include <iostream>
using namespace std;
void swap(char *pa,char *pb)
{
	char *t;
	t=pa;
	pa=pb;
	pb=t;
}
void swap2(char **pa,char **pb)
{
	char *t;
	t=*pa;
	*pa=*pb;
	*pb=t;
}
void swap3(char *&pa,char *&pb)//指针的引用
{
	char *t;
	t=pa;
	pa=pb;
	pb=t;
}
int main()
{
	char *pa="china";
	char *pb="america";
	cout<<"pa"<<pa<<endl;
	cout<<"pb"<<pb<<endl;
	//swap(pa,pb);
	//swap2(&pa,&pb);
	swap3(pa,pb);
	cout<<"pa"<<pa<<endl;
	cout<<"pb"<<pb<<endl;
	return 0;
}

什么是C++引用

2.可以定义指针的指针,不能定义引用的指针。
int a;
int* p = &a;
int** pp = &p; // ok
int& r = a;
int&* pr = &r; // error
3.可以定义指针数组,但不能定义引用数组,可以定义数组引用。
int a, b, c;
int* parr[] = {&a, &b, &c}; // ok
int& rarr[] = {a, b, c}; // error
int arr[] = {1, 2, 3};
int (&rarr)[3] = arr; // ok
4.常引用

const 引用有较多使用。它可以防止对象的值被随意修改。因而具有一些特性。

(1)const 对象的引用必须是 const 的,将普通引用绑定到 const 对象是不合法的。

这个原因比较简单。既然对象是 const 的,表示不能被修改,引用当然也不能修改,必须使用 const 引用。实际上,const int a=1; int &b=a;这种写法是不合法的,编译不过。

(2)const 引用可使用相关类型的对象(常量,非同类型的变量或表达式)初始化。

这个是const 引用与普通引用最大的区别。const int &a=2;是合法的。double x=3.14; const int&b=x;也是合法的。

4.常引用原理

const 引用的目的是,禁止通过修改引用值来改变被引用的对象。const 引用的初始化特性较为微妙,可通过如下代码说明

double val = 3.14;
const int &ref = val; // int const & int & const ??
double & ref2 = val;
cout<<ref<<" "<<ref2<<endl;
val = 4.14;
cout<<ref<<" "<<ref2<<endl;

上述输出结果为 3 3.14 和 3 4.14。因为 ref 是 const 的,在初始化的过程中已经给定值,不允许修改。而被引用的对象是 val,是非 const 的,所以 val 的修改并未影响 ref 的值,而 ref2 的值发生了相应的改变。

那么,为什么非 const 的引用不能使用相关类型初始化呢?实际上,const 引用使用相关类型对象初始化时发生了如下过程:

int temp = val;
const int &ref = temp;

如果 ref 不是 const 的,那么改变 ref 值,修改的是 temp,而不是 val。期望对 ref 的赋值会修改 val 的程序员会发现 val 实际并未修改。

int i=5;
const int & ref = i+5;
//此时产生了与表达式等值的无名的临时变量,
//此时的引用是对无名的临时变量的引用。故不能更改。
cout<<ref<<endl;

5.const的好处

1,使用 const 可以避免无意修改数据的编程错误。

2,使用 const 可以处理 const 和非 const 实参。否则将只能接受非 const 数据。

3,使用 const 引用,可使函数能够正确的生成并使用临时变量(如果实参与引用参数不匹配,就会生成临时变量)

6.引用的本质浅析

1.大小与不可再引用

struct TypeP
{
	char *p;
};
struct TypeC
{
	char c;
};
struct TypeR
{
	char& r; //把引用单列出来,不与具体的对象发生关系
};
int main()
{
	printf("%d %d %d\n",sizeof(TypeP),sizeof(TypeC),sizeof(TypeR));
	return 0;
}

什么是C++引用

结论:引用的本质是,是对常指针 type * const p 的再次包装。

1、const int *pi                                   指向常量的指针。
2、int * const pi                                  指针本身是一个常量,称为“指针常量”、“常指针”。
3、const int * const pi                       指向常量的指针常量。

到此,关于“什么是C++引用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/61866.html

(0)

相关推荐

  • 如何使用Spring Data Jpa查询全部并排序

    技术如何使用Spring Data Jpa查询全部并排序这篇文章将为大家详细讲解有关如何使用Spring Data Jpa查询全部并排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。S

    攻略 2021年11月21日
  • esp32使用光敏传感器实现LED灯的亮暗线性调节

    技术esp32使用光敏传感器实现LED灯的亮暗线性调节 esp32使用光敏传感器实现LED灯的亮暗线性调节LED灯接ESP32的18口和GND。
    光敏传感器VCC接3.3,GND接GND,DO不接,AO

    礼包 2021年11月11日
  • 网上值机提前多久,网上值机后需要提前多久到机场

    技术网上值机提前多久,网上值机后需要提前多久到机场在飞机起飞前2个小时网上值机提前多久,都可以去机场办理登机牌。可以前一天晚上去机场打印登机牌。乘坐飞机前,因需要打印登机牌,领取行程单,办理行李托运,过安检等手续。机场接

    生活 2021年10月22日
  • 抖音刷真人点赞,免费刷抖音赞?

    技术抖音刷真人点赞,免费刷抖音赞?抖音作品要吸引更多的人,抖音视频内容首先要吸引抖音用户关注。在抖音话题榜热搜榜上会出现很多热度非常高的作品,这种类型的作品自带热搜体质,点赞自然就多。其次,我们可以在抖音刷赞买赞网站上买

    测评 2021年10月26日
  • 从数据库到可视化性能分析python

    技术从数据库到可视化性能分析python本篇内容主要讲解“从数据库到可视化性能分析python”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“从数据库到可视化性能分析pytho

    攻略 2021年11月26日
  • 嵌入式Linux系统flash分区设计及文件系统格式选择的示例分析

    技术嵌入式Linux系统flash分区设计及文件系统格式选择的示例分析本篇文章给大家分享的是有关嵌入式Linux系统flash分区设计及文件系统格式选择的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇

    攻略 2021年10月21日