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.
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
.
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;
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.