typedef struct CDLNode
{
char CDName[15];
char country[10];
char CDType[10];
int isLended;
struct CDLNode * next;
}CDLNode,*CDLinkList;
//创建空表
int InitList(CDLinkList WeHave)
{
WeHave=(CDLinkList)malloc(sizeof(CDLNode));
if(!WeHave)
exit(1);
WeHave->next=NULL;
return 0;
}
void main()
{
CDLinkList WeHave;
CDLNode thisCD;
InitList(WeHave);//创建这个空表。。
printf("请输入5:\n");
if(getchar()=='5')
addNewCD(WeHave,thisCD);
}
你应该传引用的代码没写对,下面就是传引用的代码:
int InitList(CDLinkList &WeHave)
{
WeHave=(CDLinkList)malloc(sizeof(CDLNode));
if(!WeHave)
exit(1);
WeHave->next=NULL;
return 0;
}
void main()
{
CDLinkList WeHave;
InitList(WeHave);//创建这个空表。。
}
int InitList(CDLinkList WeHave)就没达到你的目标,这个函数里处理的WeHave,就没影响到mian里的WeHave。未初始化也只是警告,忽略后一样可以编译成功。
C++函数的参数是传值的,对形参的值的修改并不会修改实参的值,所以即使调用了initList()函数,WeHave仍然是空值。正确的做法应该是将函数的
参数改为引用或指针类型
int InitList(CDLinkList WeHave)就没达到你的目标,这个函数里处理的WeHave,就没影响到mian里的WeHave。未初始化也只是警告,忽略后一样可以编译成功。
你应该传引用的代码没写对,下面就是传引用的代码:
int InitList(CDLinkList &WeHave)
{
WeHave=(CDLinkList)malloc(sizeof(CDLNode));
if(!WeHave)
exit(1);
WeHave->next=NULL;
return 0;
}
void main()
{
CDLinkList WeHave;
InitList(WeHave);//创建这个空表。。
}
我很认真的,没水啊!传引用就是这样啊