如何在 C 中使用指针增加数组的元素?

How to increase an array's element with pointers in 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 required as increment operand" 错误。我能做些什么来修复我的代码?

*(array+2)++ 意思是 (array+2)=(array+2)+1 在你的情况下 array[1]=(array+2)++ 这意味着 array[1]=(array+2)=*(array+2)+1 !!!错误

你应该这样做:

main()
{
  int array[20]={1,5,10,15,20};
  array[10]=*array+1;
  array[1]=*(array+2)+1;
  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;
}

或者如果您想获取下一个值:

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

在此声明中

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

右边的表达式等同于

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

即首先将 post固定增量应用于临时对象(指针)array + 2,其结果(递增前的指针)被解除引用。

您不能递增临时对象。如果你的意思是post-增加指向元素的值那么你应该写

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

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

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

我是这样修复的:

#include<stdio.h>
main()
{
    int array[20]={1,5,10,15,20};
    array[10]=*array+1; //This gets the value of array[0] adds 1 and assigns it to array[10]
    array[1]=((*(array+2))++);// This assigns the value of array[2] to array[1] and then increments array[2] by 1
    /****
    int i=0;
    Remember the difference between printf("%d,i++); & printf("%d,++i);
    the first prints the value then increments i by 1
    the second increments the value then print i;
    */
    array[5]=*(array+3)*array[4]; //This is equivalent to array[5] = array[3]*array[4]=15*20=300
    printf("array[10]=%d\narray[1]= %d\narray[5] = %d\narray[2]=%d",array[10], array[1], array[5],array[2]);
    return 0;
}