Can someone explain to me what is going on here? Consider the code
#include
int main()
{
int A[2][2] = {{0}};
std::cout << A
int A[2][2] = {{0}};
This is a static 2D array, it's not a pointer to pointer, it's just a 1D array with special access.
The fact that it's not a point to pointer, but a 2D array on a 1D array means that A[0]
or *A
accesses the array and returns the 1D array that is the first row. Then the second dereferentiation gets the actual value. This generalizes to nD if you have int A[x][y][z][t]...
.
So the first two are the "same" address, but they are not the same type.