鱼C论坛

 找回密码
 立即注册
查看: 2581|回复: 11

链表的指针

[复制链接]
发表于 2014-6-24 14:36:31 | 显示全部楼层 |阅读模式
20鱼币
typedef struct node
{
        int data;
        struct node *next;
}sqlist,*linklist;
sqlist和*liklist有啥区别呢?
为什么可以这样linklist s,r;
不是应该*linklist s,r;?


分配地址时  s=(linklist)malloc(sizeof(linklist));
                    s=(node *)malloc(sizeof(node));


函数传参数时(node  **s)和(linklist  *s)传的都是地址?

最佳答案

查看完整内容

typedef struct node { int data; struct node *next; }sqlist,*linklist; 这个重命名使得sqlist与struct node等同,*linklist与struct node等同,那么linklikst就与&struct node等同了,由此可知,linklist等同于struct node*。 *linklist也可以定义,不过*linklist等同于sqlist,也就是struct node,所以这就是他们的区别。 至于你的第二个问题,我感觉有些问题:malloc函数的参数是个无符号整形数值 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-24 14:36:32 | 显示全部楼层
typedef struct node
{
        int data;
        struct node *next;
}sqlist,*linklist;
这个重命名使得sqlist与struct node等同,*linklist与struct node等同,那么linklikst就与&struct node等同了,由此可知,linklist等同于struct node*。

*linklist也可以定义,不过*linklist等同于sqlist,也就是struct node,所以这就是他们的区别。

至于你的第二个问题,我感觉有些问题:malloc函数的参数是个无符号整形数值,参数的作用是说明被分配的储存单元的大小,至于malloc函数的返回值则是一个地址,这个地址可用于各种寻址,也就是这样,至于你的问题,我没有看太明白,不过你可以整理下思路继续问。

满意请采纳,不满意请追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-24 15:26:53 | 显示全部楼层
本帖最后由 oggplay 于 2014-6-24 17:11 编辑

要想明白,先理解这个东西:
typedef int IG;
IG d;

typedef int * intptr;
intptr s;
[b]
typedef int IG,* intptr;
*s=d;

以下不难理解了吧:
typedef struct node {...} sqlist;


typedef struct node * linklist;
typedef struct node {...} sqlist, *linklist;
sqlist d;[/b]linklist s=&d;

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-6-24 16:04:04 | 显示全部楼层

typedef struct node * linklist

定义一个结构体指针变量用linklist表示是不是这样理解,求指教。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-24 16:18:40 | 显示全部楼层
本帖最后由 oggplay 于 2014-6-24 17:18 编辑
luckin 发表于 2014-6-24 16:04
typedef struct node * linklist

定义一个结构体指针变量用linklist表示是不是这样理解,求指教。


linklist d;
等于
struct node *d;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-6-24 16:23:59 | 显示全部楼层

函数传参数时(node  **s)和(linklist  *s)传的都是地址?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-24 16:56:39 | 显示全部楼层
本帖最后由 oggplay 于 2014-6-24 17:13 编辑
luckin 发表于 2014-6-24 16:23
函数传参数时(node  **s)和(linklist  *s)传的都是地址?

虽然都是传递的地址,但是不一样,linklist *(参数s)指向结构体首地址,node **是指向结构体指针(比如指针next)的指针
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-6-24 19:20:47 | 显示全部楼层
oggplay 发表于 2014-6-24 16:56
虽然都是传递的地址,但是不一样,linklist *(参数s)指向结构体首地址,node **是指向结构体指针(比如指 ...

那linklist  s
s是什么呢 大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-6-25 07:29:15 | 显示全部楼层
折心灬小轩 发表于 2014-6-24 23:38
typedef struct node
{
        int data;

函数传参数时node  (**s)
linklist  ( *s)
linklist   (s)
传的都什么参数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-25 15:19:36 | 显示全部楼层
typedef struct node
{
        int data;
        struct node *next;
}sqlist,*linklist;

int main()
{
        sqlist a;
        linklist p = &a;



        return 0;
}
a 定义了一个结构
p 是指针指向a这个结构

可以推断  linklist  就是struct node*
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-5 21:35:57 | 显示全部楼层
折心灬小轩 发表于 2014-6-24 14:36
typedef struct node
{
        int data;

小轩还交流C++ http://bbs.fishc.com/group-264-1.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-9 21:56:42 | 显示全部楼层
拈花小仙 发表于 2014-7-5 21:35
小轩还交流C++ http://bbs.fishc.com/group-264-1.html

1.论坛等级不够,不能够打招呼和加好友,所以。。。
2.群组人员数量已达到上限。。。
3.企鹅779139218
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 14:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表