ある構造体 MATRIX を以下の様に作っています。
 typedef struct MATRIX_STRUCT {
   long row;
   long col;
   float **data;
 } *MATRIX;

その上で、下の様に matA を宣言しています。
この matA を引数にして関数を実行し、その関数の中で
matA->data のサイズやデータを決めているのですが、
もとの関数に戻ってきたときに、matAがNULLのままになってしまいます。
詳しくは以下のように書いています。

void hoge(MATRIX matA);

int main(){
  MATRIX matA = NULL;
  hoge(matA);
  // matA が NULL のままです。
  return(0);
}

void hoge(MATRIX matA){
  matA = matalloc(3, 4); // 3*4の行列を作る関数です
  matA->data[0][0] = 1.0;
  matA->data[0][1] = 1.5;
  ・・・
  //この時点では、ちゃんと matA 内にデータが入っています。
  return;
}

どのように記述すれば良いのでしょうか?よろしくお願いします。