用函数怎么给链表分配内存?

因为我身边也没有什么太会的人,上网查的也没有写得详细;
最近刚好在做链表的题目,所以把问题整理出来,希望有人看到能帮我解答一下;
首先你们先看看这三张图

在这里插入图片描述在这里插入图片描述在这里插入图片描述

问题一:我在GCC的编译器写了像图三一样的代码,有了这样的提示," data *&p"是什么意思?为什么和"data *p"是同一种类型?
是像p=&a?像指针那样,指针的指针?首地址?什么鬼?不懂!

(百度什么的找不到较为详细的结论。。。。

在这里插入图片描述

问题二:图一和图二进行比较得到的,没有分配内存,就算调用分配了,也没有用?为什么?

(如果主函数和子函数都有分配内存,结果赋值成功,但是头节点的地址变了,就是

| 赋值 | 主函数有分配内存 | 主函数没有分配内存|
|--|--|--|
| 子函数有分配内存 | 成功 | 失败 |
| 子函数没有分配内存 | 成功 | 失败 |

(这是我主观的结论。。。。大佬求解释!!!!

data *&p是指针的引用 引用是c++里面才有的 你没加引用前 实参的p和形参的p不是同一个

&是取引用,*是指针,*&类似于二重指针**