Во-первых, объявление двумерного массива неверно. Это нужно сделать следующим образом:
double data[4][4] = {
{1.0,0,0,0},
{0,1,0,0},
{0,0,1,0},
{0,0,0,1}
};
Во-вторых, для передачи в функцию вы можете сделать это как
show(data);
В объявлении функции необходимо указать аргумент в виде массива с указанием всех измерений, кроме первого. Таким образом, объявление будет выглядеть так:
void show(double arr[][4])
{
...
...
}
Это передает массив как ссылку без необходимости использовать указатель.
Надеюсь, это помогло.