顺序表SqList *&L是什么意思
Posted 阳光Cherry梦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序表SqList *&L是什么意思相关的知识,希望对你有一定的参考价值。
//顺序表基本运算算法
#include <stdio.h>
#include <malloc.h>
#define MaxSize 50
typedef int ElemType;
typedef struct
ElemType data[MaxSize]; //存放顺序表元素
int length; //存放顺序表的长度
SqList; //顺序表的类型
void CreateList(SqList *&L,ElemType a[],int n)
//建立顺序表
L=(SqList *)malloc(sizeof(SqList));
for (int i=0;i<n;i++)
L->data[i]=a[i];
L->length=n;
printf("L=%d\\n", L);//此句仅测试使用,看一下L所指向的地址
int main()
SqList *Head = NULL;
int a[5] = 1,2,3,4,5;
CreateList(Head,a, 5);
printf("Head=%d\\n", Head);此句仅测试使用,看一下Head所指向的地址
return 0;
有上面这样一段代码,CreateList函数中的参数SqList *&L是什么呢?实际上它是对结构体类型指针的引用,通常我们说函数的参数用&表示需要将传进去的参数“带回来”,比如下面代码:
#include <stdio.h>
int func(int &a)
a = 5;
int main()
int x = 10;
func(x);
printf("x=%d", x);//输出结果为x=5
func参数为int &a,表示对整形变量的引用,即需要传入的参数需要为整形,结果将会被“带回来”,所以无论x值为多少,引用传参后值都会变为5。同理CreateList函数中的参数SqList *&L就是对SqList类型指针的引用,即main函数中无论SqList型指针Head原来指向什么(此处为NULL),传入CreateList后,与其中的L指向的都是同一个地址,通过两个printf可以进行验证。
如果去掉&,函数变为void CreateList(SqList *L,ElemType a[],int n)结果会怎样呢?
void CreateList(SqList *L,ElemType a[],int n)//仅将SqList *&L修改为SqList *L,其他均无变化
//建立顺序表
L=(SqList *)malloc(sizeof(SqList));
for (int i=0;i<n;i++)
L->data[i]=a[i];
L->length=n;
printf("L=%d\\n", L);//此句仅测试使用,看一下L所指向的地址
运行结果
可以看出不加引用,Head传入后仅仅相当于给L赋了一个初值,L指向的地址不会影响Head。
在单链表结构的定义过程中,严蔚敏版数据结构教材定义了结构体类型指针LinkList(typedef struct LNode *Linklist),所以在传递结构体指针的引用时,直接使用LinkList &L,而李春葆版本的数据结构教材没有这样的定义,传递参数使用LNode *&L
typedef struct LNode
ElemType data; //数据域
struct LNode *next; //指针域
LNode,*LinkList; // LinkList为Lnode类型的指针
关于引用传递:
1、实际上引用相当于给变量起别名,比如下面代码,j是i的引用,也就是j是i的别名,它们实际上就是一个东西,所以无论修改哪一个,另一个都会跟着变。
int i = 5;
int &j = i;
j = 10;
printf("i=%d, j=%d", i, j);//得到i和j的值都是10
2、传递引用给函数形参变化实参也发生变化,但是传递指针不一定,需要根据内部的操作具体判断。引用类型作形参,在内存中并没有产生实参的副本,它直接对实参操作;而一般变量作参数,形参与实参就占用不同的存储单元,所以形参变量的值是实参变量的副本。
参考文章:https://blog.csdn.net/tingfengx/article/details/8787218
以上是关于顺序表SqList *&L是什么意思的主要内容,如果未能解决你的问题,请参考以下文章
数据结构顺序表中Sqlist *L,&L,Sqlist *&L
SqList *L 和 SqList * &L的区别/学习数据结构突然发现不太懂 小祥我查找总结了一下
数据结构的问题!讲解一下每行的意思,尤其是那些sqlist,elemtype,L.length和L.data[i]的意思