关于我作为新手 使用C语言 建立空的单链表 遇到的问题记录(free()返回值异常; *L is a pointer, did you mean to use ‘->‘)

本文介绍如何使用C语言创建单链表节点结构体,包括结构体定义、初始化链表函数实现及main函数示例。同时探讨了指针与多重指针的正确使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

期末考试学习数据结构 学麻了 记录一下

我是个新手 如果所说的话有错误 还望各位大佬多多包涵或是指正

下面是新建一个单链表节点的结构体 一个指针域一个数据域

#include<stdio.h>
#include<stdlib.h>

typedef struct Node{
    int data;
    struct Node *next;
}Node, *LinkList;

然后定义初始化链表的函数

这个函数就是向头指针所在的地址分配内存 然后令头指针指向NULL

因为这里LinkList本来就是一个指针

如果这里的第一行改为void InitList(LinkList *L)

就相当于往InitList传入了 **Node

就会报错 " *L is a pointer; did you mean to use '->'? "

如果有这个报错建议检查一下是否传入了多重指针

void InitList(LinkList L){
    L = (LinkList)malloc(sizeof(Node));
    L -> next = NULL;
}

接下来是main()

指针L一定要初始化为NULL

最后free()释放指针L的内存后要释放指针L为NULL

否则main()不能正常返回0

int main(){
    LinkList L=NULL; /*指针初始化为NULL*/
    InitList(L);

    free(L);  /*  注意malloc()后要释放内存 */
    L = NULL; /*  释放内存后一定要释放指针 */
    return 0;
}

另外

关于箭头"->"的用法 我认为(1条消息) C语言中访问结构体成员时 点 . 和 箭头 -> 的区别_回归心灵的博客-优快云博客_c语言.和箭头区别

说得挺好

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值