int a[5][5];
int** b = new int *[5]{ new int [5], new int [5], new int [5], new int [5], new int [5], };
assert(&(a[2][4]) + 1 == &(a[3][0])); //Всегда true
assert(&(b[2][4]) + 1 == &(b[3][0])); //Скорее всего false
Настоящие делаются либо динамическим выделением массива массивов (придётся знать при компиляции все размеры кроме первого), либо выделением плоского массива и доступа специальными аксессорами.