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

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

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是几道C++指针数组的选择题,希望能帮到你: 1. 下列哪个选项声明了一个指向整数的指针? A. int *p; B. int p; C. int &p; D. int []p; 答案:A 解析:选项A声明了一个指向整数的指针,选项B声明了一个整数变量,选项C声明了一个整数的引用,选项D声明了一个整数的数组。 2. 下列哪个选项声明了一个整数数组? A. int *p; B. int p; C. int &p; D. int []p; 答案:D 解析:选项D声明了一个整数数组,选项A声明了一个指向整数的指针,选项B声明了一个整数变量,选项C声明了一个整数的引用。 3. 假设有一个名为array的整数数组,下列哪个选项是正确访问第二个元素? A. array[0] B. array[1] C. array D. &array[2] 答案:B 解析:数组下标从0开始,因此第二个元素的下标是1,所以选项B是正确的。 4. 假设有一个名为ptr的指向整数的指针,下列哪个选项是正确访问指针所指向的整数? A. *ptr B. &ptr C. ptr D. ptr++ 答案:A 解析:选项A访问了指针所指向的整数,选项B访问了指针本身的地址,选项C访问了指针本身,选项D将指针自增了一次。 5. 假设有一个名为array的整数数组,下列哪个选项是正确访问数组最后一个元素? A. array[size-1] B. array[size] C. array[size+1] D. &array[size] 答案:A 解析:数组下标从0开始,因此最后一个元素的下标是size-1,所以选项A是正确的。 希望这些题目能够帮助你巩固指针数组的知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值