Вы можете объявить свою функцию как:
f(int size, int data[][size]) {...}
Затем компилятор выполнит всю арифметику указателя для вас.
Обратите внимание, что размеры размеров должны отображаться перед самим массивом.
GNU C разрешает переадресацию объявлений аргументов (в случае, если вам действительно нужно передать размеры после массива):
f(int size; int data[][size], int size) {...}
Первое измерение, хотя вы также можете передать аргумент, бесполезно для компилятора C (даже для оператора sizeof при применении к массиву, переданному как аргумент, всегда будет рассматриваться как указатель на первый элемент).