I have seen dozens of questions about “what’s wrong with my code” regarding multidimensional arrays in C. For some reason people can’t seem to wrap their head around what is happening here, so I decided to answer this question as a reference to others:
How do I correctly set up, access, and free a multidimensional array in C?
If others have helpful advice, please feel free to post along!
In C since C99, even dynamic multidimensional arrays can be easily allocated in one go with
malloc and freed with
double (*A)[n] = malloc(sizeof(double[n][n])); for (size_t i = 0; i < n; ++i) for (size_t j = 0; j < n; ++j) A[i][j] = someinvolvedfunction(i, j); free(A);