形参是指针时,若改变指针指向的内容,则主调函数中实参指针指向的内容也会得到相应的改变。
在线性表(含堆栈、队列等)操作中,方法函数的形参通常都用指向线性表的指针作为参数,在C编程中都是这么用的,但在C++中,通过用&对形参进行引用,方便了编程,但也带来写“混乱”。是否使用&与“喜好”有关系,与“要与不要”没关系。下面给出用与不用&的初始化函数的实例,其他函数是不需要&的,请仔细琢磨。
// 数据结构
typedef int ElemType;
typedef struct list{
ElemType *elem;
int length;
}*LIST;
1、不用&
void InitList(LIST L) { // 初始化
L->elem = new ElemType[MAXSIZE]; // 只改变指向的内容
L->length = 0;
}
// ..................
int main() {
LIST L;
L = new list; // 这里给L申请空间
InitList(L); // 完成初始化
// ............
return 0;
}
2、使用&
void InitList(LIST &L) { // 初始化
L = new list; // 这里给L申请空间
L->elem = new ElemType[MAXSIZE]; // 也改变指向的内容
L->length = 0;
}
// ..................
int main() {
LIST L;
InitList(L); // 完成初始化
// ............
return 0;
}