回 帖 发 新 帖 刷新版面

主题:初学数据结构 基本问题

在学习数据结构中  看到写status DeleteLinkList(LinkList *L,int i)
status CreatLinkList(LinkList *L,int n)在 L前要加* 但是写status Delete_head (LinkList L)  status Delete_head (LinkList L)  void output(LinkList L) 就不需要加* 号   在单链表中也出现这样的问题  不知道为什么  在调试程序时候  可以修改正确  但不知道所以然     请明白原因的   给小弟 讲讲   不盛感激

回复列表 (共6个回复)

沙发

前面的*是指对L进行了改变,而前面没有*的则是在此过程中没有对L进行改变,例如用e取L中的某一个元素,只是把元素的值取出来,对L并没有改变,在简单一点就是,*表示返回的L和原来的那个不同了。
[em11]

板凳

以指针作为引用,也就相当于是一个别名.表的改动会影响到原先的表的.

3 楼

就是这样

4 楼

我也遇到同样问题,,,谢谢各位!

5 楼

2楼说的不错!!

6 楼

在C里运用指针传参数是为了实现与传址调用相同的功能,因为C语言只有传值调用,所以你才会有这些疑惑。所以凡是需要把值传出去的地方加个*,对于一般的指针数据类型就定义宏,加以区别。

我来回复

您尚未登录,请登录后再回复。点此登录或注册