如何在 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;
}
#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;
}