求教抽象数据类型Triplet,该如何处理

求教抽象数据类型Triplettypedef ElemType *TripletstatesInitTriplet(Triplet &T,ElemType v1 ,ElemType

求教抽象数据类型Triplet
typedef ElemType *Triplet

states InitTriplet(Triplet &T,ElemType v1 ,ElemType v2,ElemType v3){
T=(Elem *)malloc(3 * sizeof(ElemType));
if(!T)exit(OVERFLOW);
T[0]=v1; T[1]=v2; T[2]=v3;
return OK;
}

states Get(Triplet T,int i,ElemType &e){
if(i<1|| i>3) return ERROR;
e=T[i-1];
return OK;
}
哪位高手帮忙看看呀
&T和T的不同;
(Elem *)的作用
States的作用
ElemType &e的作用
最好能解释下这个算法

[解决办法]
传地址:
是传值的一种特殊方式,只是他传递的是地址,不是普通的如int,那么传递地址以后,系统在栈中开辟空间存放地址,实参和形参都指向同一个对象
 
传引用
真正的以地址的方式传递参数,传递以后,形参和实参都是同一个对象,只是他们名字不同,对形参的修改将影响实参的值

[解决办法]
若还不明白建议看看http://hi.baidu.com/litaosmile/blog/item/6cae973e73ceef3a71cf6cec.html