C++数组指针不能自增1/自减1

和自甴很熟 提交于 2020-03-04 12:27:08

我们知道指针可以自增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;

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!