typedef struct _hoge {
  int x, y, z;
} hoge;
hoge a0, b0, *a1, *a2;

で a0 = b0; が値渡し、a1 = a2; が参照渡し。
参照の値渡しって何?