请问线性表中写函数时形参什么时候要\不要加&(引用)?,请给我讲讲,搞不清

如题所述

形参是指针时,若改变指针指向的内容,则主调函数中实参指针指向的内容也会得到相应的改变。

在线性表(含堆栈、队列等)操作中,方法函数的形参通常都用指向线性表的指针作为参数,在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;
}

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答