首页 > 解决方案 > 如何用C中的指针增加数组的元素?

问题描述

#include<stdio.h>
main()
{
    int array[20]={1,5,10,15,20};
    array[10]=*array+1;
    array[1]=*(array+2)++;
    array[5]=*(array+3)*array[4];
    printf("array[10]=%d\narray[1]= %d\narray[5] = %d\n",array[10], array[1], array[5]);
    return 0;
}

我收到“需要 Ivalue 作为增量操作数”错误。我可以做些什么来修复我的代码?

标签: carrayspointersincrementlvalue

解决方案


在这份声明中

array[1]=*(array+2)++;

右手表达式等价于

array[1]=*( (array+2)++ );

也就是说,首先后缀增量应用于临时对象(指针)array + 2,其结果(增量之前的指针)被取消引用。

您不能增加临时对象。如果你的意思是后增加被指出的元素的值,那么你应该写

array[1] = ( *(array+2) )++;

如果你想预先增加值,那么你应该写

array[1] = ++*(array+2);

推荐阅读