C/C++ 函数接受参数:指针与变量的区别
#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length;
}SqList;
//初始化线性表
bool InitList(SqList *L) //改变了传进去的参数的属性值时,形参应是指针型变量
{ //本例中初始化了length属性值
L->length=0;
return true;
}
//在线性表指定位置前插入元素
bool ListInsert(SqList *L,int i,ElemType e) //本例中,在线性表L里插入新元素,改变了线性表L里的元素排序,
{ //即修改了线性表L里的元素,应传L的指针*L
if(L->length==MAXSIZE)
return false;
if(i<1||i>L->length+1)
return false;
if(i<=L->length)
{
for(int k=L->length-1;k>=i-1;k--)
L->data[k+1]=L->data[k];
}
L->data[i-1]=e;
L->length++;
return true;
}
//删除线性表中指定元素,并将删除的元素赋给变量e
ElemType e;
bool ListDelete(SqList *L,int i,ElemType *e) //此处改变了线性表L,应传指针*L,e变量没有初始化,
{ //准备接受删除的元素时,应为指针类型*e,与int a scanf("%d",&a)类似&a
if(L->length==0||i<1||i>L->length)
return false;
//if(i<1||i>L->length)
//return false;
*e=L->data[i-1];
if(i<L->length)
{
for(int k=i;k<L->length;k++)
L->data[k-1]=L->data[k];
}
L->length--;
return true;
}
//顺序打印线性表里的元素
bool View(SqList L) //没有改变线性表L里的属性值,不必传指针类型,传变量类型即可
{
using namespace std;
//if(L.length==0)
//return false;
//else
for(int i=0;i<L.length;i++)
cout<<L.data[i]<<" ";
cout<<endl;
return true;
}