📅  最后修改于: 2023-12-03 15:29:54.472000             🧑  作者: Mango
在C++中,指针和引用是两个非常重要的概念,它们可以用来访问和操作变量及其数据。本文将会介绍指针和引用的基本概念,以及它们的用法和区别。
指针是一个存储其他变量地址的变量。通过指针,我们可以间接地访问和操作另一个变量及其数据。指针使用前必须初始化,否则会导致无法预知的错误。指针可以通过*
和&
符号进行操作。其中*
用于将指针解引用,访问指针指向的变量的值;而&
用于获取变量的地址。
指针变量的定义和初始化如下所示:
int *p; // 定义一个指向int类型变量的指针
int a = 2;
p = &a; // 将指针p指向变量a的地址
通过指针解引用来访问指针指向的变量的值,示例代码如下:
int value = *p; // 解引用指针p,获取指针指向的变量a的值
指针可以进行比较操作,对应的运算符有<
,>
,<=
,>=
,==
和!=
。比较操作比较的是指针所指向的地址,示例代码如下:
int *p1, *p2;
p1 = new int;
p2 = p1;
if (p1 == p2) {
// 指针p1和p2指向同一个地址
}
指针也可以作为数组来使用,数组名本身就是一个指向数组首元素的指针。同时,可以通过指针进行加减运算。指针加上一个整数值,会指向偏移量为该整数值的位置;指针减去一个整数值,会向指向数组首元素的指针方向移动相应的元素位置。示例代码如下:
int array[5] = {1, 2, 3, 4, 5};
int *p = array; // 数组名就是指向数组首元素的指针
p += 2; // p指向了数组的第三个元素
int second = *(p + 1); // 获取指针p指向元素的下一个元素的值,即数组的第四个元素
引用是一个已存在变量的别名。它使用&
符号定义,相当于变量的一个别名。引用可以被用于赋值和函数参数传递等地方,使得代码更加简洁、易读。引用在定义时必须初始化,后续不可更改其所绑定的变量。
引用的定义和初始化如下所示:
int a = 1;
int &r = a; // 定义一个指向变量a的引用r
引用可以作为函数参数传递,这样函数内部对引用的操作会直接影响到实参本身。示例代码如下:
void increase(int &r) {
r++; // 对r所绑定的变量进行加1操作
}
int a = 1;
increase(a); // a的值变为2
引用也可以作为函数的返回值,通过此方式可以实现对函数调用结果进行赋值。示例代码如下:
int &increase(int &r) {
r++; // 对r所绑定的变量进行加1操作
return r;
}
int a = 1;
increase(a) = 3; // a的值变为3
指针和引用有以下区别: