它为此for循环中的行*(repetitions + x)++;
提供了此错误。任何线索为什么?
for (int y = 0; y<hours; y++)
{
if (*(array + x) == *(array + y))
{
*(repetitions + x)++;
}
}
答案 0 :(得分:1)
您无法增加右值repetitions + x
。这与写作错误相同:
int a = 3;
int b = 2;
(a+b)++; // ????
++
运算符需要左值,即变量的指定。 a+b
是临时结果,没有内存地址,无法递增。
您可能想写(*(repetitions + x))++;
,可以更明确地表达为repetitions[x]++;
答案 1 :(得分:-1)
这解析为*((repetitions + x)++)
- 也就是说,它尝试修改常量地址,然后取消引用它。大概你想要增加地址指向的内容。
你可以通过几种不同的方式做到这一点。一个是使用括号。另一个使用预增量:
++*(repetitions + x);
或:
(*(repetitions + x))++;