关于传值和传引用的有关问题

关于传值和传引用的问题,在线等
typedef struct _m_a
{
  WORD w1;
  WORD w2;
}m_a,*pm_a;

VOID GetSth(m_a ma)
{
  ma.w1=1;
  ma.w2=2;
}

main()
{
  m_a ma;
  GetSth(ma); //主要是构造结构体,也就是数据包
  SendSth(ma);//主要是发送上面构造好的数据,其实也就是发送。
}

我就是想实现 GetSth组包,然后SendSth 发送包。

向我上面的写法,我知道是错的,但是我不知道如何修改。帮下,谢谢!



------解决方案--------------------
VOID GetSth(m_a& ma)
??

------解决方案--------------------
一般赋值操作都是传的引用吧,引用改变了,实参也会改变的。
传给形参的是变量的值,传递是单向的。如果在执行函数期间形参的值发生变化,并不传回给实参。因为在调用函数时,形参和实参不是同一个存储单元。
------解决方案--------------------
VOID GetSth(m_a ma)
{
ma.w1=1;
ma.w2=2;
}
这里 m_a只是一个副本,对原来的值没有影响,应该传引用或指针
VOID GetSth(m_a &ma)
{
ma.w1=1;
ma.w2=2;
}
VOID GetSth(m_a *ma)
{
*ma.w1=1;
*ma.w2=2;
}