lvalue required as increment operand

前端 未结 9 1645
清歌不尽
清歌不尽 2020-12-04 15:56

gcc 4.4.4

What am I doing wrong?

char x[10];
char y[] = \"Hello\";
while(y != NULL)
    *x++ = *y++;

Many thanks for any advice.

相关标签:
9条回答
  • 2020-12-04 16:33

    At most times, array just like a pointer.

    Just remember you can't modify array!

    And y++ is y = y + 1.

    char y[] = "Hello";
    

    So you do modify array when you y++!!

    It will produce error: lvalue required as increment operand.

    0 讨论(0)
  • 2020-12-04 16:39

    x++ is the short form of x = x + 1. However, x here is an array and you cannot modify the address of an array. So is the case with your variable y too.

    Instead of trying to increment arrays, you can declare an integer i and increment that, then access the i'th index of an arrays.

    char x[10], y[5] = "Hello";
    int i = 0;
    while (y[i] != 0)
    {
        x[i] = *y[i];
        i++;
    }
    x[i] = 0;
    
    0 讨论(0)
  • 2020-12-04 16:40

    x and y are arrays, not pointers.

    They decay into pointers in most expression contexts, such as your increment expression, but they decay into rvalues, not lvalues and you can only apply increment operators to lvalues.

    0 讨论(0)
提交回复
热议问题