栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 引用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 引用

引用是已定义的变量的别名,通常引用变量的主要用途是用作函数的形参;通过将引用变量作为参数,函数将使用原始值而不是副本。除指针外,引用也为函数处理大型结构提供了一种非常方便的途径

引用和指针的很类似效果很类似,但是引用还是不同于指针;其中:在声明引用时需要将其初始化,而不能像指针可以先声明后赋值

引用在声明时需初始化

int number=10;
int*p;  // 声明指针
*p=&number;  // 赋值

int& q=number; // 创建时进行初始化

引用在初始化后不允许修改指向

int& q=number;  // 相当于添加了const修饰符 int* const p=&number;
引用作函数参数
void swap1(int* a,int* b)  // 传地址
{
    int temp=*a;
    *a=*b;
    *b=temp;
}

void swap2(int& a,int& b)  // 传引用
{
    int temp=;
    a=b;
    b=temp;
}

//  上述使用的效果一致,都成功交换了a b的值,但是相对来说,传引用更方便
引用作函数返回值

如果函数的返回值是引用,这个函数调用可以作为左值

同理:如果函数的返回值是指针,这个函数调用也可以作为左值

#include 
using namespace std;

int& f()  // 引用作返回值
{
	static int a=10;  // 静态变量存储在全局区,在程序结束时会自动释放
	return a;
}

int* f1()  // 指针做返回值
{
	static int b=20;
	return &b;
}

int main(void)
{
	int& n=f();
	cout << n << endl;
	cout << n << endl;
	f()=100;  // 尝试作为左值使用
	cout << n << endl;
	cout << n << endl;
	
	int* p=f1();
	cout << *p << endl;
	cout << *p << endl;
	*f1()=200;  // 尝试作为左值使用
	cout << *p << endl;
	cout << *p << endl;
	return 0;
} 
常量引用
int& q=10;  // 会产生错误
const int& q=10;  // 编译器会自动生成一块合法的临时空间存放10  --> int temp=10; const int& q=temp;
函数调用

如果函数调用的参数不是左值或与相应的const引用参数的类型不匹配,则C++将创建类型正确的匿名变量,将函数调用的参数的值传递给该匿名变量,并让参数来引用该变量

在函数调用中使用引用参数应尽可能使用const修饰参数

  • 使用const可以避免无意中修改数据的编程错误
  • 使用const是函数能够处理const和非const实参,否则只能接受非const数据
  • 使用const引用使函数能够正确生成并使用临时变量
void print(const int& q)
{
	// q=200; 出现错误
	cout << q <
    int a=100;
    print(a);  // 输出100
    return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983361.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号