指针运算可以使用运算符 -- + -
+ - 使用有限制
+ - 不能两个指针相加
- 表示两个指针相隔的元素个数
一个指针可以加上或减去一个整数
//: C03:PointerArithmetic.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
#include <iostream>
using namespace std;
#define P(EX) cout << #EX << ": " << EX << endl;
int main() {
int a[10];
for(int i = 0; i < 10; i++)
a[i] = i; // Give it index values
int* ip = a;
P(*ip);
P(*++ip);
P(*(ip + 5));
int* ip2 = ip + 5;
P(*ip2);
P(*(ip2 - 4));
P(*--ip2);
P(ip2 - ip); // Yields number of elements
getchar();
} ///:~
这个程序以宏开始
宏实业字符串化的预处理器的特征 表达式用一个#实现
# 作用是获得任何一个表达式并把它转换成为一个字符数组
# 允许打印一个表达式 ,后面接冒号,再接一个表达式的值
++ -- 前缀和后缀方式对指针说有效
这里只使用前缀,可以看到运算后的效果,后缀不能马上看到
++ -- 只能加上和减去整数值
输出
*ip: 0
*++ip: 1
*(ip + 5): 6
*ip2: 6
*(ip2 - 4): 2
*--ip2: 5
ip2 - ip: 4