鱼C论坛

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

链表的指针

[复制链接]
发表于 2014-6-24 14:36:31 | 显示全部楼层 |阅读模式
20鱼币
  1. typedef struct node
  2. {
  3.         int data;
  4.         struct node *next;
  5. }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函数的参数是个无符号整形数值 ...
小甲鱼最新课程 -> https://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函数的返回值则是一个地址,这个地址可用于各种寻址,也就是这样,至于你的问题,我没有看太明白,不过你可以整理下思路继续问。

满意请采纳,不满意请追问。
小甲鱼最新课程 -> https://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]
  1. typedef int IG,* intptr;
复制代码
*s=d;

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


typedef struct node * linklist;

  1. typedef struct node {...} sqlist, *linklist;
复制代码
sqlist d;[/b]linklist s=&d;

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

typedef struct node * linklist

定义一个结构体指针变量用linklist表示是不是这样理解,求指教。
小甲鱼最新课程 -> https://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表示是不是这样理解,求指教。


  1. linklist d;
复制代码
等于
  1. struct node *d;
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

函数传参数时(node  **s)和(linklist  *s)传的都是地址?
小甲鱼最新课程 -> https://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)的指针
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

那linklist  s
s是什么呢 大神
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

函数传参数时node  (**s)
linklist  ( *s)
linklist   (s)
传的都什么参数?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-6-25 15:19:36 | 显示全部楼层

  1. typedef struct node
  2. {
  3.         int data;
  4.         struct node *next;
  5. }sqlist,*linklist;

  6. int main()
  7. {
  8.         sqlist a;
  9.         linklist p = &a;



  10.         return 0;
  11. }

复制代码
a 定义了一个结构
p 是指针指向a这个结构

可以推断  linklist  就是struct node*
小甲鱼最新课程 -> https://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
小甲鱼最新课程 -> https://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
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 11:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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