l作为赋值的左操作数所需的值

时间:2013-02-24 02:12:31

标签: c

我正在尝试使用相同的随机选择的整数填充多个数组,但我一直在主题行中得到错误。这是我的代码:

while(i++ < arraySize){
        randInt = (int)random()%100;
        originalArray++ = randInt;
        ascendingOrderArray++ = randInt;
        descendingOrderArray++ = randInt;
    }

为什么在此上下文中发生此错误?根据我的理解,这段代码与将randInt分配给三个数组,然后在代码末尾递增指针相同。

3 个答案:

答案 0 :(得分:1)

假设originalArrayascendingOrderArraydescendingOrderArrayint *类型的指针而randInt类型为int,则必须 - 在分配时引用指针。例如*originalArray++ = randInt;。这将取消引用指针,产生&#34;左值&#34;您可以分配给它,将randInt的值赋给它(当originalArray指针指向的时候),然后递增指针。

答案 1 :(得分:1)

在这里,您尝试为数字赋值 - 指向数组的地址。数字是右值,而不是左值,所以它失败了。

originalArray++ = randInt;

这里,您要为内存位置分配一个值 - 通过取消引用指针获得的地址。这是一个左值,所以它成功了:

*originalArray++ = randInt;

答案 2 :(得分:0)

原始++不是对象,因此您无法在其中存储值。