linux 链表程序,菜鸟linux下的c语言链表实现初始化

刚接触linux不久,今天想要用linux写个小程序,结果在初始化函数这一步怎么也过不去,请教程序哪里有问题

typedef struct Link_node

{

int data;

struct Link_node * next;

}node,*Link_list;

void init_Linklist(Link_list *L)

{

Link_list p;

p=*L;

p=(Link_list )malloc(sizeof(node));

p->data=0;

p->next=NULL;

};

void main()

{

Link_list *K;

init_Linklist(K);

}

编译之后运行显示段错误,gdb检查问题出在init函数的“p=*L”,

Program received signal SIGSEGV, Segmentation fault.

0x000000000040061d in init_Linklist ()

将函数里的代码直接放在主函数里运行无错,想知道这到底是怎么回事,拜谢。

解决方案

40

你主函数内的K指针,指向的是未知区域,你在init_Linklist函数里直接解引用*L自然会报错

而且你主函数里Link_list *K;这样用意味着K是二级指针,也不对,写成下面这样就可以了:

typedef struct Link_node

{

int data;

struct Link_node * next;

}node,*Link_list;

void init_Linklist(Link_list *L)

{

*L = (Link_list )malloc(sizeof(node));

(*L)->data=0;

(*L)->next=NULL;

}

void main()

{

Link_list K;

init_Linklist(&K);

}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明菜鸟linux下的c语言链表实现初始化!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值