#include<iostream>
#include<conio.h>
#include<string.h>
#define OK 1
#define MAXSIZE 100
using namespace std;
typedef int Status;
#define OK 1
typedef struct
{
char name[5];
float price;
}Book;
typedef struct LNode
{
Book Elem;
LNode *next;
}LNode,*List;
Status InitList(LNode *B)
{
B=new LNode();
if(!B)
exit(-1);
else
B->next=NULL;
return OK;
}
int main()
{
LNode *L;
List LL;
InitList(L);
cout<<L->next;
getch();
return 0;
}
指针是引用类型,链表结点初始化,我用指针传递,修改结点内容的值,应该L里内容会变的,但是没变,这是为什么呢?
b是指针,但他本身的值也只是传递了副本到函数内,所以接口应该修改为二级指针或者指针的引用,比如 initList(List & B)这样
你的这个初始化只是分配了一个内存空间,并没有给内容赋值啊!,如果你要给内容赋值的话,就需要在InitList函数里面的if(!B)之前赋值
Status InitList(LNode *B) 中B是一个地址, 不能更改,需要更改的话,请使用二级指针
Status InitList(LNode **B)
{
*B=。。。
}
没看出这个问题和
https://ask.csdn.net/questions/1048432
这个问题有什么区别,除了L被换成了B
你到底什么地方不理解,一直问相同的问题。马上就要离开问答了,如果你有不理解,我可以最后详细为你详细讲一次。