• 链表中LinkList L与LinkList *L( & * L.elem L->elem)


    摘要

    LinkList L:L是结构体指针,使用“->“运算符来访问结构体成员;(*L)是结构体,使用"."运算符访问结构体成员

    函数是否有&看是否要返回该链表等,若返回加&,否则不加;与L->elem还是L.elem没有关系

    取地址符运算符&

    取其操作对象的地址

    指针运算符*

    1.定义变量时,表示将x定义为指针类型变量

            int *p:一级指针,表示p所指向地址里存放的是一个int类型的值

            int **p:二级指针,表示p所指向地址里存放的是一个指向int类型的指针

    2.运算时,其后跟指针表示指针所指变量的值

    注意:用于运算时,*后不能跟未初始化的指针(定义时只分配存储指针本身的内存,未分配存储数据的内存)

    结构体指针

    typedef指Lnode替代struct Lnode,*LinkList替代struct LinkList*(结构体指针,指向整个结构体)

    1. typedef struct Lnode{
    2. ElemType data;
    3. struct Lnode *next;
    4. }Lnode,*LinkList;//LinkList为指向结构体Lnode的指针

    对应的定义链表与结点指针也有两种方式。但L表示整个链表,所以常用LinkList定义;p表示指针,所以常用Lnode定义 

    1. //定义链表L
    2. LinkList L;
    3. Lnode *L;
    4. //定义结点指针p
    5. LinkList p;
    6. Lnode *p;

    L.elem和L->elem

    L.elem:通过结构体变量L来访问结构体成员变量elem

    L->elem:通过指针变量L指向的结构体成员变量elem,指针通过"->"可直接访问结构体中的成员,不需临时对象

    区别:L.elem直接访问结构体成员,L->elem通过指针访问结构体成员(适用于结构体变量被封装在指针中,通常动态内存分配中使用)

    使用L.elem还是L->elem看结构体定义时,定义的为结构体Lnode(L->elem),还是结构体指针(L.elem)*LinkList。

    main函数中pop(&s/s,e)?

    看pop函数定义,sqstack *s对应&s; sqstack s对应s

  • 相关阅读:
    ECS通过DNAT将C非专线网段并网
    Java并发编程-前期准备知识-上
    基于RT-Thread的智能家居助手
    Pytorch&Keras CIFAR10图像分类(详情介绍以及汇总所有博客)
    阿里2022“研究型实习生”计划公布,开放200多个科研选题
    Vue3+Vite实现工程化,事件绑定以及修饰符
    vue自定义指令directives
    MyEclipse个人长久使用方法
    Qt设置字体格式和颜色
    Vuex环境搭建
  • 原文地址:https://blog.csdn.net/2301_78066243/article/details/137890260