C array declaration and assignment?

Simply put, arrays are not assignable. They are a “non-modifiable lvalue”. This of course begs the question: why? Please refer to this question for more information:

Why does C++ support memberwise assignment of arrays within structs, but not generally?

Arrays are not pointers. x here does refer to an array, though in many circumstances this “decays” (is implicitly converted) to a pointer to its first element. Likewise, y too is the name of an array, not a pointer.

You can do array assignment within structs:

struct data {
    int arr[10];
};

struct data x = {/* blah */};
struct data y;
y = x;

But you can’t do it directly with arrays. Use memcpy.

Leave a Comment