C++入门经典-例5.16-输出引用

1:如不加特殊说明,一般认为引用指的都是左值引用。引用实际上是一种隐式指针,它为对象建立一个别名,通过操作符&来实现,引用的形式如下:

数据类型 & 表达式;

例如:

int a=10;

int & ia=a;

ia=2;

上面的程序定义了一个引用变量ia,它是变量名a的别名,对ia的操作与对a的操作完全一样。“ia=2”把2赋给a,“&ia”返回a的地址。执行“ia=2”和执行“a=2”等价。

使用引用的说明如下:

(1)一个C++引用被初始化后,无法使用它再去引用另一个对象,它不能被重新约束。

(2)引用变量只是其他对象的别名,对它的操作与原来对象的操作具有相同作用。

(3)指针变量与引用主要区别有两点:一是指针是一种数据类型,而引用不是一个数据类型,指针可以转换为它所指向变量的数据类型,以便使赋值运算符两边的类型相匹配;而使用引用时,系统要求引用和变量的数据类型必须相同,否则不能进行数据类型转换。二是指针变量和引用变量都用来指向其它变量,但指针变量使用的语法要复杂一些;定义引用变量后,其使用方法和普通变来那个相同。

例如:

int a;

int *pa=&a;

int & ia=a;

示例代码如下:

// 5.16.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{
    int a;
    int & ref_a = a;
    a = 100;
    cout << "a= " << a << endl;
    cout << "ref_a=" << ref_a << endl;
    a = 2;
    cout << "a= " << a << endl;
    cout << "ref_a=" << ref_a << endl;
    int b = 20;
    ref_a = b;
    cout << "a= " << a << endl;
    cout << "ref_a=" << ref_a << endl;
    ref_a--;
    cout << "a= " << a << endl;
    cout << "ref_a=" << ref_a << endl;
}

运行结果:

时间: 2024-11-04 17:06:00

C++入门经典-例5.16-输出引用的相关文章

C++入门经典-例5.18-通过引用交换数值

1:在C++中,函数参数的传递方式主要有两种,即值传递和引用传递.值传递是指在函数调用时,将实际参数的值赋值一份传递到调用函数中,这样如果在调用函数中修改了参数的值,其改变将不会影响到实际参数的值.而引用传递则恰恰相反,如果函数按引用方式传递,那么在调用函数中修改了参数的值,其改变会影响到实际参数. 示例代码如下: // 5.18.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using na

C++入门经典-例5.19-指针的引用与传递参数

1:引用传递参数与指针传递参数能达到同样的目的.指针传递参数也属于一种值传递,其传递的是指针变量的副本.如果使用指针的引用,就可以达到在函数体内改变指针地址的目的.运行代码如下: // 5.19.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using std::cout; using std::endl; static int global=16;//静态全局变量 void getMax(i

C++入门经典-例6.12-使用数组地址将二维数组输出

1:以a[4][3]为例 a代表二维数组的地址,通过指针运算符可以获取数组中的元素 (1)a+n代表第n行的首地址 (2)&a[0][0]既可以看作第0行0列的首地址,同样也可以被看作是二维数组的首地址.&a[m][n]就是第m行n列元素的地址 (3)&a[0]是第0行的首地址,当然&a[n]就是第n行的首地址 (4)a[0]+(n-1)表示第0行第n个元素 (5)*(*(a+n)+m)表示第n行第m列 (6)*(a[n]+m)表示第n行第m列元素 2:代码如下: // 6

C++入门经典-例3.23-使用嵌套循环输出乘法口诀表

1:代码如下: // 3.23.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iomanip> #include <iostream> using namespace std; void main(void) { int i,j; i=1; j=1; for(i=1;i<10;i++) { for(j=1;j<i+1;j++) cout << i << "

C++入门经典-例3.12-使用if-else语句实现根据输入的字符输出字符串

1:代码如下: // 3.12.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { cout<<"输入一个A-D范围内的大写字母作为成绩评价"<<endl; char iInput; cin >> iInput; if(iInput == 'A') { cout <&l

C/C++算法竞赛入门经典Page16 习题1-6 三角形

题目:输入三角形 3 条边长度值(均为正整数),判断是否能为直角三角形的3个边长.如果可以,则输出yes,不能输出no,如果无法构成三角形,则输出 not a triangle 分析能构成三角形的条件:两边之和大于第三边,两边之差小于第三边. 再分析能够成直角三角形的条件:a2+b2=c2. (1)声明三角形的三边变量a,b,c,并输入a,b,c: int a,b,c;//三角形的三边 scanf("%d%d%d",&a,&b,&c); (2)先判断是否为三角形

C++入门经典-例6.9-通过指针变量获取数组中的元素

1:通过指针引用数组,需要先声明一个数组,再声明一个指针. int a[10]; int *p; 然后通过&运算符获取数组中元素的地址,再将地址值赋给指针变量. p=&a[0]; 代码实例如下: // 6.9.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { int i,a[10]; int *p; //利用循环

C++入门经典-例2.14-使用移位运算

1:代码如下: // 2.14.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { long nWord=0x12345678;//长整形,十六进制输入 int nBits; nBits=nWord & 0xFFFF;//位与 printf("low bits are 0x%x\n",nBits);//

C++入门经典-例2.9-输出十六进制数以及大写的十六进制数

1:代码如下: #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; void main() { int i = 0x2F, j = 255;//0x代表16进制, cout << i << endl;//以10进制输出 cout << hex << i << endl;//以16进制输出 cout