这是一个关于C语言数据结构的指针的问题


#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

你到底什么地方不理解,一直问相同的问题。马上就要离开问答了,如果你有不理解,我可以最后详细为你详细讲一次。