引用的作用是给一个变量起一个别名,例如有一个变量a,想给他起一个别名b,可以写成:int a; int &b=a;
这样声明后,代表a和b就是同一变量单元,而&不是代表取地址符号,而是引用声明符,说明定义了b可并没有为它另开辟内存单元,b和a就是同一变量。
先看一个例子。
#include "stdafx.h"
#include <iostream>
using namespace std;
//注意形式参数
void swap(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
}
int main(int argc, char* argv[])
{
int i=3,j=5;
swap(i,j);
cout<<"i="<<i<<endl;
cout<<"j="<<j<<endl;
return 0;
}
结果如图:
可以看出虽然我们在main函数中调用了swap函数,但是i,j的值并未发生改变。
为什么呢?因为普通的函数过程调用,只有实际参数向形式参数传值,而形式参数无法改变实际参数的值。对于普通的函数调用,主调函数接受的来自被调函数的信息,最多只是被调函数的返回值。即被调函数向主调函数最多只能传递1个数据。
上面的例子中,被调函数中,形参a,b本来是3,5,后来变为5,3。但是它们无法让实际参数i,j知道这些改变,所以i,j的值并未发生改变。
我们只讲swap函数的形式参数改变一下。
将
void swap(int a,int b);
改为
void swap(int& a,int &b);
这样就可以使得i,j变为5,3。输出如下:
下面来讲解一下这样修改的原理。
函数调用:当需要在一个函数(称为主调函数)中使用另一个函数(称为被调函数)实现的功能时,便以函数名字进行调用,成为函数调用。被调函数间同主调函数交换信息(有时候被调函数不需要向主调函数传递信息,比如被调函数中只有cout语句)的方法有2种:一种是由被调函数把返回值返回给主调函数,另一种是通过参数带回信息。函数调用时实参和形参间交换信息的方法有传值调用和引用调用两种。
1)传值调用CallByValue:函数调用时以实参向形参传递相应类型的值。(这种方式下形式参数不能向实际参数传递信息!)
2)引用调用CallByReference:当形参为引用类型时,函数中对形参的访问和修改实际上就是对相应的实参的访问和修改
然后说说引用存在的价值,引用的出现主要是把它作为函数参数,以扩充函数传递数据的功能。用传递变量别名的方法实现函数传递数据。
- 大小: 7.6 KB
- 大小: 8.8 KB
分享到:
相关推荐
"C++语言概述、数据的输入与输出、基本数据类型和表达式" C++语言概述 C++语言是从C语言发展演变而来的,首先是一个更好的C,它引入了类的机制,最初的C++被称为“带类的C”。1983年正式取名为C++。从1989年开始...
C++之所以增加引用类型, 主要是把它作为函数参数,以扩充函数传递数据的功能。 到目前为止我们介绍过函数参数传递的两种情况。 1) 将变量名作为实参和形参 这时传给形参的是变量的值,传递是单向的。如果在执行函数...
6.5.1 用函数指针变量调用函数 6.5.2 用指向函数的指针作函数参数 6.6 返回指针值的函数 6.7 指针数组和指向指针的指针 6.7.1 指针数组的概念 6.7.2 指向指针的指针 6.8 有关指针的数据类型和指针运算的小结 6.8.1 ...
在C语言中,如果要实现类似的功能,通常需要为每种数据类型编写不同的函数或结构体。 C++还引入了异常处理(Exception Handling),这是一种错误处理机制。在C语言中,错误通常通过返回值或全局变量来检测,而C++的...
类型就是该函数的类型,也就是该函数的返回值的类型,此类型可以是C++中除函数、数组类型之外的任何一个合法的数据类型,包括普通类型、指针类型和引用类型等。 函数的返回值通常指明了该函数处理的结果,由函数体...
C++语言的数据类型是编程的基础,它包括了基本类型、导出类型和用户定义类型三类。基本类型中,逻辑型用关键字bool表示,取值只能为true或false,分别对应整数1和0;字符型用char表示,取值范围是ASCII码集或扩充...
C++增加引用类型, 主要是把它作为函数参数,以扩充函数传递数据的功能,较指针参数来得更加安全直观。将引用作为参数传递的时候,实参初始化形参的时候不分配内存空间,也不调用拷贝构造函数,因此更加能够提高运算的...
引用是C++语言中的一个重要概念,允许将基本数据、结构体类型、指针类型作为引用,并且可将引用作为函数参数。引用可以解决大块数据或对象的传递效率和空间问题。 封装 封装是C++语言中的一个重要概念,它可以防止...
在《面向对象设计与C++课件第1章C++对C性能的扩充》中,主要讨论了C++语言如何在C的基础上增强了性能和功能。以下是其中的关键知识点: 1. **行注释**:C++引入了双斜线(`//`)注释方式,使得单行注释变得更加方便...
本节主要介绍了C++对C语言的一些关键扩充,包括函数原型声明、内联函数、函数重载、函数模板以及字符串变量和默认参数的函数。 1. **函数原型声明**: 函数原型声明是C++中为了明确函数的返回类型和参数类型的一种...
6.5.1 用函数指针变量调用函数 6.5.2 用指向函数的指针作函数参数 6.6 返回指针值的函数 6.7 指针数组和指向指针的指针 6.7.1 指针数组的概念 6.7.2 指向指针的指针 6.8 有关指针的数据类型和指针运算的小结 6.8.1 ...
函数是C++程序中实现特定功能的代码块。资料中涵盖了函数的定义和使用、参数传递、返回值以及局部变量和全局变量的区分。 数据类型: C++的数据类型比C语言更为丰富,提供了布尔型变量、双字节宽字符类型wchar_t等...
5.3.3 函数中的静态变量 5.4 递归函数调用 5.5 C++/CLI编程 5.5.1 接受数量可变实参的函数 5.5.2 main()的实参 5.6 小结 5.7 练习 第6章 程序结构(2) 6.1 函数指针 6.1.1 声明函数指针 6.1.2 函数指针作为实参 6.1.3...
5.3.3 函数中的静态变量 5.4 递归函数调用 5.5 C++/CLI编程 5.5.1 接受数量可变实参的函数 5.5.2 main()的实参 5.6 小结 5.7 练习 第6章 程序结构(2) 6.1 函数指针 6.1.1 声明函数指针 6.1.2 函数指针作为实参 6.1.3...
它是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。 图片 C++是C语言的继承,进一步扩充和完善了C语言,...
在C++中,我们通过定义类来创建对象,类可以包含数据成员(属性)和成员函数(方法)。例如,一个名为`Student`的类可能包含`name`、`age`这样的属性,以及`study`、`play`这样的方法。 2. 继承:继承允许我们创建...
5.3.3 函数中的静态变量 5.4 递归函数调用 5.5 C++/CLI编程 5.5.1 接受数量可变实参的函数 5.5.2 main()的实参 5.6 小结 5.7 练习 第6章 程序结构(2) 6.1 函数指针 6.1.1 声明函数指针 6.1.2 函数指针作为实参 6.1.3...
在类的成员函数中,this指针是隐式存在的,它指向调用当前成员函数的对象实例。 C++的类和对象是面向对象编程的核心概念。类是创建对象的模板,包含数据成员和成员函数。对象是类的实例,可以通过成员函数对类的...