我们知道指针可以自增1/自减1,如下面这个代码是没问题的
int *var;
var++;
但如果var是指向数组的指针,那么var++是非法的,如下面例子
#include <iostream>using namespace std;
const int MAX = 3;int main ()
{int var[MAX] = {10, 100, 200};for (int i = 0; i < MAX; i++){*var = i; // 这是正确的语法var++; // 这是不正确的}return 0;
}
把指针运算符 * 应用到 var 上是完全可以的,但修改 var 的值是非法的。这是因为 var 是一个指向数组开头的常量,不能作为左值。var++会修改var的地址,但var 只能是指向数组第一个元素的指针,不能修改。
但是下面代码是允许的
*(var + 2) = 500;