*&与*的区别

最近在学的数据结构,总是对于&与的理解不够

Answer1:
结构体类型为SqList …… void InitList(SqList *&q){……}/&的作用 {SqList *q; …… InitList(q); }
&的意思是对线性表(你是在学数据结构吧……)直接进行操作,否则的话是相当于把原来的表复制一份,再对复制品操作。初始化的话肯定要对原表操作啦,要加&的。

Answer2:

L是SqList类型,然后*是指L是个针肯定没错了,是这个&是引用或者叫做别名。
你大概是不知道这个&吧?
函数调用的时候是 值传递,所以你在函数中修改了这个指针的时候,不能把结果带回,相当于一个局部的操作,只在那个函数中有意义。也就是说,当函数返回以后,原先的指针还是指向原先的那片内存空间。因而不能通过传递指针修改指针的指向。
这里的这个引用,是指这个SqList类型的指针L的引用。也就是说在函数中可以修改 真正的 指针L指向的内存空间。这才是真正的修改了L。

这里引入了一个新的概念,引用和指针的区别

1.C语言中并不存在引用
2.&在C语言中表示取地址符号,在C++中表示的是引用
例子如下:
类型标识符 &引用名=目标变量名

引用必须初始化,并且只能且需要指定一个数据对象
使用别名操作就必定操作的是其自身,所以初始化销毁等操作务必牢记需要这样。

而用个指针,会复制该表,操作复制后的另一个表,原表不变

你可能感兴趣的:(*&与*的区别)