在 C++ 中,指针 变量保存的是变量的地址,变量 的地址本质上也是一个 整数,因此,我们可以使用 运算符 对指针变量进行运算。
指针变量常用的运算符就是加法和减法运算符,其中,自增 和自减运算符用的最多。对指针变量进行自增或者自减也叫做指针变量的移动。
p++;
参数 | 描述 |
---|---|
p | 指针变量。 |
我们对指针变量 p 进行了自增操作。
使用加法或者减法对指针变量进行运算
#include <iostream>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
int a = 2021;
int *pa = &a;
long long d = 1099;
long long *pd = &d;
cout << "before pa = " << pa << " pd = " << pd << endl;
pa = pa+1;
pd = pd+1;
cout << "after pa = " << pa << " pd = " << pd << endl;
return 0;
}
程序运行后,控制台输出如下图所示:
我们首先,定义了两个变量,变量的类型分别为 int 和 long long ,接着,我们再次定义了两个指针变量,指向了这两个变量。
接着,我们分别将指针变量加 1,最后,我们打印了未加 1 之前的指针变量的值和加 1 之后的指针变量的值,我们可以看到,int 类型的指针变量加了 4,而 long long 类型的指针变量加了 8。
我们可以看到,对指针都进行加 1 操作,但加的具体的数值却是不一样的,而且所加的数值正好等于该指针所指向的变量所占的字节数。
这是因为,如果一个指针指向了 数组 中的某个元素,那么加 1 就表示指向下一个元素,减 1 就表示指向上一个元素,这样指针的加减运算就具有了现实的意义,因此,指针加一减一其实是指针多代表的元素的字节大小。
使用自增和自减对指针进行移动
#include <iostream>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
int a = 2021;
int *pa = &a;
long long d = 1099;
long long *pd = &d;
cout << "before pa = " << pa << " pd = " << pd << endl;
pa = pa++;
pd = pd++;
cout << "after pa = " << pa << " pd = " << pd << endl;
pa = pa--;
pd = pd--;
cout << "last pa = " << pa << " pd = " << pd << endl;
return 0;
}
程序运行后,控制台输出如下图所示:
我们可以看到,我们使用自增和自减对指针进行移动,移动的字节数同样是指针所指向的数据类型的字节大小。
在 C++ 中,指针变量保存的是变量的地址,变量的地址本质上也是一个整数,因此,我们可以使用运算符对指针变量进行运算。
指针变量常用的运算符就是加法和减法运算符,其中,自增和自减运算符用的最多。对指针变量进行自增或者自减也叫做指针变量的移动。