array literal in C++
``` int main() { int m1[2][2] = {{1, 2}, {3, 4}}; return 0; } ``` Array literal can only be used in initializers. ``` int arr[4]; arr = {0, 1, 2, 3}; // Error ``` When you write ``` int arr[4]; ``` from that moment on, every time you use arr in a dynamic context, C considers arr to be &arr[0], namely the decay of an array to a pointer. Therefore: ``` arr = (int[]){0, 1, 2, 3}; ``` is considered to be, ``` &arr[0] = (int[]){0, 1, 2, 3}; ```