CPP学习之——指针的运算(8.18)

一 概述

本节主要讲述指针运算相关的操作:

  • 指针的加减运算
  • 指针的赋值运算
  • 指针的相减运算
  • 指针的比较运算

二 指针的加减运算

2.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
using namespace std;
int main()
{
int *p=new int;
cout<<"指针p保存的空间地址为:\t"<<p<<endl;
p++;
cout<<"自加后,指针p保存的空间地址为:\t"<<p<<endl;
p--;
cout<<"自减后,指针p保存的空间地址为:\t"<<p<<endl;
p=p-2;
cout<<"减2后,指针p保存的空间地址为:\t"<<p<<endl;
return 0;
}

2.2 输出结果

1
2
3
4
指针p保存的空间地址为:	0x337db0
自加后,指针p保存的空间地址为: 0x337db4
自减后,指针p保存的空间地址为: 0x337db0
减2后,指针p保存的空间地址为: 0x337da8

2.3 说明

  • p++;将指针变量p中的内存地址自加。由于p指向的是int型变量,因此执行加1操作会将原来的内存地址增加4个字节
  • p--;将指针变量p中的内存地址自减。由于p指向的是Int型变量,因此执行减1操作会将原来的内存地址减少4个字节

三 指针的赋值

3.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
using namespace std;
int main()
{
int *p=new int;
cout<<"p:"<<p<<endl;
int *p1=new int;
cout<<"p1:"<<p1<<endl;
p=p1;
cout<<"赋值后..."<<"p:"<<p<<endl;
return 0;
}

3.2 输出结果

1
2
3
p:0x337db0
p1:0x337dd0
赋值后...p:0x337dd0

四 指针相减(内存差)

4.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
using namespace std;
int main()
{
int *p=new int;
cout<<"p:"<<p<<endl;
int *p1=new int;
cout<<"p1:"<<p1<<endl;
*p=p-p1;
cout<<"两指针相减的结果为:"<<*p<<endl;
return 0;
}

4.2 输出结果

1
2
3
p:0x677db0
p1:0x677dd0
两指针相减的结果为:-8

五 指针的比较(内存位置比较)

5.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
using namespace std;
int main() {
int *p = new int;
cout << "p:" << p << endl;
int *p1 = new int;
cout << "p1:" << p1 << endl;
if (p > p1) {
cout << "p大于p1的内存地址";
} else {
cout << "p1大于p的内存地址";
}
return 0;
}

5.2 输出结果

1
2
3
p:0x337db0
p1:0x337dd0
p1大于p的内存地址