引用即给变量赋予一个别名,就像外号一样,我叫李晓明,外号小明,实际都是指李晓明这个人。
#include<iostream>
using namespace std;
int main()
{
//C++中的引用
int a = 3;
int &b = a;//引用要初始化
b = 10;
cout << a << endl;
system("pause");//暂停程序
return 0;
}
程序的输出记过就是10,通过b的引用,将a的值改掉了。
结构体中的引用,
#include<iostream>
using namespace std;
typedef struct
{
int x;
int y;
}Coor; //坐标结构体
int main()
{
//C++中的引用
Coor c1;
Coor &c = c1;
c.x = 10;
c.y = 20;
cout << c1.x << " " << c1.y << endl;
system("pause");//暂停程序
return 0;
}
指针类型的引用是最为复杂的。
格式为:
类型 *&指针引用名=指针;
#include<iostream>
using namespace std;
int main()
{
int a = 10;
int *p = &a;
int *&q = p;//引用指针
*q = 20;
cout << a << endl;
system("pause");//暂停程序
return 0;
}
引用作函数参数,在C语言中有一个例子。
void fun(int*a, int*b)//完成交换功能
{
int c = 0;
c = *a;
*a = *b;
*b = c;
}
//调用时
int x = 10, y = 20;
fun(&x, &y);
可以看出,在函数调用时,要写成取地址(&)x和取地址y。如果用引用的形式的话。
void fun(int &a; int &b)
{
int c = 0;
c = a;
a = b;
b = a;
}
int x = 10, y = 20;
fun(x, y);
那么,引用和指针实际上都是对内存直接进行操作,他们有什么去区别和练习呢。
指针是某块内存的地址,而引用是某块内存的别名。
区别:
1. 指针是一个实体,而引用只是个别名;
2. 指针需要用*才能操作,引用不需要;
3. 引用需要初始化,在初始化后不能改变,而指针的初始化不是必须的,且可以改变;
4. 引用没有const,指针可以有const;
5. 引用不能为空,指针可以为空;
6. sizeof()操作,对指针来说是定长,而对引用来说是其数据类型的size;
7. 指针的++和引用的++操作也是不一样;
8. 指针需要为其分配内存,而引用不需要,因为是对已有的内存的引用。