今天在编写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是没有用的哦。