前言
本篇首先回顾指针的概念, 用C指针的缺陷引出C++中的引用, 然后对引用进行说明
比如, 什么是引用? 引用解决指针什么问题? 引用的特性和使用等等
1. 指针
什么是指针
指针是内存单元的地址, 口语中的指针实际上是指针变量, 存储地址的变量
#include <stdio.h>
int main()
{
int a = 0;
// 指针变量 pa
int* pa = &a;
}
这里的pa就是一个指针变量, 存储变量a的地址
pa前面的*表示pa是一个指针变量, *前面int表示存储的是一个整形变量的地址, 所以pa是一个整形指针
现在知道了什么是指针, 指针是有分类的, 下面具体说一下指针的分类
指针的分类
#include <stdio.h>
int add(int x, int y)
{
return x + y;
}
int sub(int x, int y)
{
return x - y;
}
int mul(int x, int y)
{
return x * y;
}
int main()
{
int a = 0;
// 整形指针 pa
int* pa = &a;
// 字符指针 ps
char* ps = "abc";
// 二级指针ppa
int** ppa = &ppa;
int b = 0;
int c = 1;
int d = 2;
int* parr[3] = { &b, &c, &d }; //指针数组 parr
int arr[5] = { 0,1,2,3,4 };
int(*pc)[5] = &arr; //数组指针 pc
// 函数指针 ptr1
int(*ptr1)(int, int) = add;
// 函数指针数组 ptr2
int(*ptr2[3])(int, int) = { add,sub,mul };
}
指针的缺陷
如上述列举的指针类型, 二级指针, 数组指针, 指针数组... 所以指针的缺陷很明显, 就是太复杂了
C++为了简化指针引入引用来降低指针的复杂性
2. 引用的概念
什么是引用
引用就是给一个已经存在的变量取别名, 如下例子
b 是变量a的一个别名, 打印b的值就是打印a的值,因为它们实际上指向的是同一块的内存空间
注意, 在学习引用的初阶, 建议这样理解引用:
引用不是新定义一个变量,而是给已存在的变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间
引用的定义与特性
定义引用的语法:
类型& 引用变量名(对象名) = 引用实体
#include <iostream>
using namespace std;
int main()
{
int a = 1;
int& b = a; // 引用 b
}
引用的特性:
1. 引用在定义时必须初始化
2. 一个变量可以有多个引用
#include <iostream>
using namespace std;
int main()
{
int a = 1;
int& b = a;
int& c = a;
}
3. 引用一旦引用一个实体,不能再引用其他实体
b = x, 是将x指向的值赋值给b指向的值, 而不是引用b更改引用的对象
3. 引用的使用
引用作为函数形参
#include <iostream>
using namespace std;
void swap(int& x, int& y)
{
int tmp = x;
x = y;
y = tmp;
}
int main()
{
int a = 1;
int b = 2;
printf("%d %d\n", a, b);
swap(a, b);
printf("%d %d\n", a, b);
}
引用作为函数返回值
#include <iostream>
using namespace std;
int& count()
{
static int n = 0;
n++;
return n;
}
int main()
{
int ret = count();
cout << ret << endl;
}
标签:变量,int,基础,C++,pa,引用,include,指针 From: https://www.cnblogs.com/xumu11291/p/17351705.html