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

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

#include#includetypedef 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是没有用的哦。