有关数据结构函数的一些问题

dongcx1234567 2013-10-19 01:17:07
如果这是一个一个结构体。
typedef struct list
{
struct list *prior ;
struct list *next;
int num;
} list,*dlist;

问题1:比如我写一个创建函数,我通常是void create_list(dlist L,int n);
但是我看有的地方括号里面的第一个形参不是星号,而是&,麻烦跟我讲一下。是不是传递的不是指针,是一个对象名的引用?是不是对顺序链表这么做好一点?
问题2:上次还有人跟我说第一个形参要用二次指针,否则必须return L;才能改动L;但是我没有这么做也是对的,麻烦帮我解释一下
问题3:关于头节点,那个num是不是不用赋值,或者赋值为0或者其他?为什么啊?
问题4:同样是创建函数,我看有的地方写的是void create_list(L,n)
dlist L;int n;{

}我查了下说以前的标准支持这么写,我们老师给我们的代码中也有这么写的。昨天一个研究生让我重看一遍C语言。太打击人了。虽然我不这么定义。
...全文
133 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
buyong 2013-10-20
  • 打赏
  • 举报
回复
引用 4 楼 dongcx1234567 的回复:
前面加一个void createlist(LinkList *L,int n ) 我的问题是形参里面L已经是指针了,为什么下面*L=(LinkList)malloc(sizeof(Node));
你这个代码能编译过么,书错了吧
lm_whales 2013-10-20
  • 打赏
  • 举报
回复
typedef struct LNode { struct LNode *prior ; struct LNode *next; int num; } Node ,*LinkList ; void createlist(LinkList *L,int n ){ ..... } 这样是为了,通过传递二级指针参数,改变指针所指的内容(一个指针)。
FancyMouse 2013-10-19
  • 打赏
  • 举报
回复
>但是我看有的地方括号里面的第一个形参不是星号,而是&,麻烦跟我讲一下。是不是传递的不是指针,是一个对象名的引用? 引用是C++的东西。C里没这玩意。你要是用C那就安心用指针。
碼上道 2013-10-19
  • 打赏
  • 举报
回复
我觉得你要把C语言书再看一下,认真再看一下 &是取址符,当然传的也是指针。
dongcx1234567 2013-10-19
  • 打赏
  • 举报
回复

前面加一个void createlist(LinkList *L,int n )


我的问题是形参里面L已经是指针了,为什么下面*L=(LinkList)malloc(sizeof(Node));
dongcx1234567 2013-10-19
  • 打赏
  • 举报
回复
引用 2 楼 FancyMouse 的回复:
>但是我看有的地方括号里面的第一个形参不是星号,而是&,麻烦跟我讲一下。是不是传递的不是指针,是一个对象名的引用? 引用是C++的东西。C里没这玩意。你要是用C那就安心用指针。
那二级指针是嘛玩意

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧