这是一个关于数据结构链表的相关问题



#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(List *L)
{
  L=new List();
  if(!L)
      exit(-1);
  //else
    // (*L).next=NULL;
  return OK;
}

int main()
{
LNode L;
L.Elem.price=1;
List * LL;
InitList(LL);


getch();


return 0;
}

这是我写的关于链表初始化的代码,
调试过程中发现了一个问题

图片说明

L的值是地址我可以理解,毕竟是指针变量嘛,
*L的值怎么还是地址?*L不应该是L地址中的内容吗?应该是结构体值啊!要不L开辟的空间给谁。

https://ask.csdn.net/questions/1043208
这两个问题应该一样。L是指针的指针。因为List是struct { ...} *

L=LL啊 List * LL;表示LL是list类型的指针,而List类型又是typedef struct LNode 类型的指针,所以LL是指针的指针的
因此L也就是指针的指针了,即L是List*类型的指针,而 * L是typedef struct LNode 类型的指针,也就是说* *L才是typedef struct LNode 类型