C语言数据结构-链表大解剖

  1. 链表抽象结构解析
  2. 引用、解引用、指针、链表赋值取值

链表抽象结构解析

typedef struct LNode
{
    Book data;
    struct LNode *next;
}LNode,*LinkList;
LNode e;
LNode *p = &e;//创建一个指针变量p,指向结构体的实例对象
p->data = 100;//通过"->"的方式来向指针变量指向的结构体的具体内容赋值
//e->data = 50;//结构体自身是不支持这种指向的
(*p).age = 200;//*p直接取其指向的对象,此时也就相当于结构体e了,因此可以直接通过点语法进行赋值
LNode e = (*p);//直接取出指向的对象,赋值给e

引用、解引用、指针、链表赋值取值

int a = 1;
int *p1 = &a;//int *p1表示创建了一个指针变量p1,*表示p1是一个指针变量,
//int表示该指针变量指向的对象的类型;&表示取a的内存地址。
//将a的内存地址赋给指针变量p1的指向对象地址空间,
//或者说,让指针变量p1指向a。
int b = *p1;//右侧代表的是直接取出指向的对象,赋值给b,b=a
引用:它用来给一个对象提供一个替代的名字。引用是别名,不用重新开辟空间
&(取地址操作符)
*(解引用操作符)
*表示指针,**表示指针的指针。
若定义LinkList L,则L为单链表的头指针,若定义LNode p,则p为指向单链表中某个结点的指针,用p代表该结点。当然也可以使用定义LinkList p,这种定义形式 完全等价于LNode *p。
指针变量p:表示结点地址。
结点变量(*p):表示一个结点(数据元素也叫结点,是数据的基本单位)。
&和 * 为互补运算。
L->data==(*L).data
L完全等于&(*p)
L完全等于p
#include
using namespace std;
void main(){
    int a=1;
    int *b;
    b=&a;//a的引用赋值给b
    cout<<(*b)<

你可能感兴趣的:(C语言数据结构-链表大解剖)