未初始化的局部变量报错

今天在编写C语言的创建单链表时,执行后出现“未初始化的局部变量L”报错提醒,我本来是想先声明一个ListLink类型的变量L,再写一个初始化函数InitList来对变量L进行初始化,结果Visual Studio就出现了以上报错,这就有点搞不懂,我明明是要对L进行初始化,结果系统提示我在对L初始化前就要对变量L初始化,研究一番发现了一个简单的解决方案:

首先来看一下我的源代码,这是已经修改后的内容,如下图所示:

#include<stdio.h>
#include<stdlib.h>
typedef struct LNode
{
    int   data;//数据域
    struct LNode* next;   //指针域
}LNode, * LinkList;


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

int main() {
    LinkList L=NULL;   //直接先给他赋值NULL来初始化
    InitList(&L);
    
}

区别在于倒数第二行代码,刚开始我直接写的是LinkList L,解决方法还是挺简单的,一共有两个。最简单的方法就是在声明变量L的时候直接赋值NULL,就相当于完成了系统需要的初始化,再利用自己写的初始化函数来创建一个带表头的单链表。

还有一个方法,就是不要写初始化函数,直接在mian函数里对变量L来初始化:

int main()
{
LinkList L;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
}

注意了啊!!!不是所有的变量初始化都是NULL来赋值啊,看清楚变量的类型,比如说你写的变量是int类型的,就可以用0来赋值,也不一定非得说是0,也可以说是其他int类型的数字,1213、18688等等都是可以的,只要类型一样就行,就是不能俩个类型不一样的混在一起用。

还有一个无关的注意点,就是初始化函数写的话一定要加上*,直接写LinkList L是没有用的哦。

  • 13
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值