C only has vectors (1D arrays), the implementation of higher dimensions is up to programmer. I know there is this idea to use vectors of vectors to emulate matrices but it is not at all a part of the language (nor efficient).
int x[100][83];
Sure looks like a 2D array of ints for all intents and purposes. int x_1d[8300];
Where x[a][b] is x_1d[a + 83*b];An array of arrays is contiguous in memory. There are no pointers involved until you take the (r)value of the array or one of the inner arrays, at which point it is degraded to be a pointer to the array's first element, as always.
Since we have the declaration, it's unambiguously the 2D array that you described.
EDIT: I might be seeing things, but I think you have your order mixed up, x[a][b] is not x_1d[a + 83b], but rather x_1d[a83+b]