Это не может быть "что-то подобное". Синтаксис, включающий две (или более) последовательных пустых квадратных скобки [][]
, никогда не действует на языке Си.
Когда вы объявляете массив с инициализатором, только первый размер может быть опущен. Все остальные размеры должны присутствовать явно. Так что в вашем случае второй размер может быть 3
int matrix[][3] = { { 2, 3, 4 }, { 1, 5, 3 } };
если вы предполагали, что это будет 3. Или это может быть 5, если вы желаете
int matrix[][5] = { { 2, 3, 4 }, { 1, 5, 3 } };
Другими словами, вы всегда будете «знать» все размеры, кроме первого. Там нет никакого способа обойти это. Тем не менее, если вы хотите «вызвать» его где-то вниз по коду, вы можете получить его как
sizeof *matrix / sizeof **matrix
Что касается первого размера, вы можете получить его как
sizeof matrix / sizeof *matrix