The brace-list initializer only works during initialization, and it cannot be used for assignment, as you seem to attempt.
Instead, just initialize the multi-dimensional array all at once:
int line[2][2] = { {100, 100}, {200, 200} };
In response to your first sentence: Arrays are arrays and pointers are pointers, and they're not the same thing. An array does however decay to a pointer to the first element with ease, and x[n]
is equivalent to *(x + n)
. This applies recursively to multi-dimensional arrays as well.
Arrays T[N]
are contiguous in memory for T
and sizeof(T[N]) == N * sizeof(T)
; therefore, arrays of arrays T[N][M]
are contiguous both for T[N]
and for T
.