c - 如何用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 作为增量操作数”错误。我可以做些什么来修复我的代码?
解决方案
在这份声明中
array[1]=*(array+2)++;
右手表达式等价于
array[1]=*( (array+2)++ );
也就是说,首先后缀增量应用于临时对象(指针)array + 2
,其结果(增量之前的指针)被取消引用。
您不能增加临时对象。如果你的意思是后增加被指出的元素的值,那么你应该写
array[1] = ( *(array+2) )++;
如果你想预先增加值,那么你应该写
array[1] = ++*(array+2);
推荐阅读
- html - 翻转卡片之间有 1px 边框
- xcode - 导航返回后 Swiftui 计时器未触发
- javascript - 想要分别执行 startHandler() 和 useHandler() (即当一个函数正在执行时,另一个应该停止)但同时工作
- python - 使用 xpath 提取图像
- python - 将列表值分配给另一个列表
- jms - 连接工厂目标的Weblogic 12C配置
- javascript - 我正在开发一个测验应用程序并尝试用 django 恢复一个问题的不同回答
- python - psycopg2 导入错误 SSL_check_private_key:找不到符号
- javascript - Django:在 AJAX 调用后无法从我的视图中检索变量
- php - paypal 结账 onApprove 功能