local variable 'h' used without having been initialized

img


#include<stdio.h>
#include<stdlib.h>
#define MaxSize 50
typedef int ElemType;
typedef struct
{ ElemType data[MaxSize];
int length;
}SqList;
void CreateList(SqList *L, ElemType a[], int n);
void DispList(SqList *L);
void main()
{
SqList *h;
int n=5;
ElemType a[]={1,3,1,4,2};
CreateList(h,a,n);
DispList(h);

}
void CreateList(SqList *L, ElemType a[], int n)
{ int i=0,k=0;
L=(SqList *)malloc(sizeof(SqList));
while(i<n)
{ L->data[k]=a[i];
k++; i++;
}
L->length=k;
}
void DispList(SqList *L)
{ for(int i=0;ilength;i++)
printf("%d",L->data[i]);
printf("\n");
}

修改处见注释,供参考:

#include<stdio.h>
#include<stdlib.h>
#define MaxSize 50
typedef int ElemType;
typedef struct
{
     ElemType data[MaxSize];
     int length;
}SqList;

void CreateList(SqList **L, ElemType a[], int n);//void CreateList(SqList *L, ElemType a[], int n);
void DispList(SqList *L);
void main()
{
     SqList *h;
     int n=5;
     ElemType a[]={1,3,1,4,2};
     CreateList(&h,a,n);  //CreateList(h,a,n);
     DispList(h);
}
void CreateList(SqList **L, ElemType a[], int n)//void CreateList(SqList *L, ElemType a[], int n)
{
     int i=0,k=0;
     (*L)=(SqList *)malloc(sizeof(SqList)); //L=(SqList *)malloc(sizeof(SqList));
     while(i < n)
     {
         (*L)->data[k]=a[i]; //L->data[k]=a[i];
         k++; i++;
     }
     (*L)->length=k;  //L->length=k;
}
void DispList(SqList *L)
{
     for(int i=0;i< L->length;i++) //for(int i<length;i++)
        printf("%d ",L->data[i]);
     printf("\n");
}