指针变量存储的是地址,而地址本身是一个整数,所以指针变量可以进行部分运算,比如 加法、减法、比较等。
一、指针加法
#include <iostream>
using namespace std;
int main(){
int b = 100;
int *p = &b;
cout << "p : " << p << endl; //p就是b的地址
p++;
cout << "p : " << p << endl;
p+=1;
cout << "p : " << p << endl;
return 0;
}
得到的结果是
p : 0x6ffe14
p : 0x6ffe18
p : 0x6ffe1c
p 的值加了数值 4 ,一个 int
类型恰好是4个字节。
所以,指针的运算,是它指向的地址进行(类型对应的)字节大小的内存偏移。
减法和加法是类似的。
二、指针变量的比较
指针变量进行比较时,比较的是地址值。如果地址相等,表示指向的是同一个数据,否则是不同的数据。
#include <iostream>
using namespace std;
int main(){
int b = 100;
int *p1 = &b;
int *p2 = &b;
cout << (p1 == p2) << endl; //p1 和 p2 指向的是同一个地址(b的地址)
return 0;
}