精华内容
下载资源
问答
  • 自引用结构

    千次阅读 2011-02-18 21:41:00
    自引用结构兼谈Malloc和Free函数 一、自引用结构 1、 什么事自引用结构自引用结构(Self-Referential Structure)是一种特殊的结构。主要特征:一个或多个自身的变量是指向自身的指针。 2. ...

    自引用结构兼谈Malloc和Free函数

    一、自引用结构

    1、 什么事自引用结构?

    自引用结构(Self-Referential Structure)是一种特殊的结构。主要特征:一个或多个自身的变量是指向自身的指针。

    2. 判断几个自引用结构是否合法?

    struct SELF_REF1{
        int A;
        struct SELF_REF1 B;
        int C;
    };

    这个结构是非法的,为什么呢?结构里面有包含B,B里面有包含自己的成员B,这样就会无休止的循环下去。

    struct SELF_REF1{
        int A;
        struct SELF_REF1 *B;
        int C;
    };

    编译器在结构的长度确定之前,就已经知道指针的长度,所以这样自引用是合法的。

     

    原文地址:http://www.cnblogs.com/P_awl/archive/2010/04/08/1707852.html

     

     

    展开全文
  • 【每日一C之十八】自引用结构

    千次阅读 2014-04-11 15:30:22
    每日一C之自引用结构  每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。  今日贝壳:解自引用结构之疑惑,struct结构体引用解析  1.自引用结构:   结构体内包含指向自身的指针,这类结构体称为自引用...

    每日一C之自引用结构

           每天一个C语言贝壳厚积薄发积跬步以致千里

     今日贝壳:解自引用结构之疑惑,struct结构体自引用解析
               1.自引用结构
           结构体内包含指向自身的指针,这类结构体称为自引用结构。常用的链表节点便是自引用结构。
                                   struct node{
                           int number;  
                    struct node *next;    //指向下一个节点的指针
                  };
         2.陷阱
           结构体内包含指向自身的指针是合法的,但包含自身变量是不合法的。如下:
                  struct node{
                           int number;  
                     struct node copy;    //一个自身节点变量
                  };
         将会导致无限递归定义,这很容易理解,结构体内含copy结构体,copy内又含copy结构体...将陷入无限的循环陷阱。
         3.为什么指针可以 ?
            首先,指向自身的指针不会引发循环定义,不会陷入循环陷阱;其次,指针具有固定的大小,定义一个结构体,编译器必须知道这个结构体所占内存的大小。
          
                         Have a nice day !
      
    展开全文
  • C语言 typedef struct自引用结构

    千次阅读 2012-03-10 15:51:30
    分析:tagMyStruct称为“tag”,即“标签”,实际上是一个临时名字,struct 关键字和tagMyStruct一起,构成了这个结构类型,不论是否有typedef,这个结构都存在。 我们可以用struct tagMyStruct varName来定义...

    例子:

    typedef struct tagNode
    {
    char *pItem;
    struct tagNode *pNext;
    }*pNode;

    正文:

    1. 基本解释

    typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。

    在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。

    至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。

    2. typedef 结构的问题

    当用下面的代码定义一个结构时,编译器报了一个错误,为什么呢?莫非C语言不允许在结构中包含指向它自己的指针吗?请你先猜想一下,然后看下文说明:

    typedef struct tagNode
    {
    char *pItem;
    struct tagNode *pNext;
    }*pNode;

    答案与分析:

    1、typedef的最简单使用

    typedef long byte_4;

    给已知数据类型long起个新名字,叫byte_4。

    2、 typedef与结构结合使用

    typedef struct tagMyStruct
    {
    int iNum;
    long lLength;
    } MyStruct;

    这语句实际上完成两个操作:

    1) 定义一个新的结构类型

    typedef struct tagMyStruct
    {
    int iNum;
    long lLength;
    };

    分析:tagMyStruct称为“tag”,即“标签”,实际上是一个临时名字,struct 关键字和tagMyStruct一起,构成了这个结构类型,不论是否有typedef,这个结构都存在。

    我们可以用struct tagMyStruct varName来定义变量,但要注意,使用tagMyStruct varName来定义变量是不对的,因为struct 和tagMyStruct合在一起才能表示一个结构类型。

    2) typedef为这个新的结构起了一个名字,叫MyStruct。

    typedef struct tagMyStruct MyStruct;

    因此,MyStruct实际上相当于struct tagMyStruct,我们可以使用MyStruct varName来定义变量。

    答案与分析

    C语言当然允许在结构中包含指向它自己的指针,我们可以在建立链表等数据结构的实现上看到无数这样的例子,上述代码的根本问题在于typedef的应用。

    根据我们上面的阐述可以知道:新结构建立的过程中遇到了pNext域的声明,类型是pNode,要知道pNode表示的是类型的新名字,那么在类型本身还没有建立完成的时候,这个类型的新名字也还不存在,也就是说这个时候编译器根本不认识pNode。

    解决这个问题的方法有多种:

    1)、

    typedef struct tagNode
    {
    char *pItem;
    struct tagNode *pNext;
    }*pNode;

    2)、

    typedef struct tagNode *pNode
    struct tagNode
    {
    char *pItem;
    pNode *pNext;
    };

    注意:在这个例子中,你用typedef给一个还未完全声明的类型起新名字。C语言编译器支持这种做法。

    3)、规范做法:

    struct tagNode
    {
    char *pItem;
    pNode *pNext;
    };

    typedef struct tagNode *pNode;

    文章出处:http://www.diybl.com/course/3_program/c++/cppjs/2008828/138362.html

    struct node

    {

      int data;

      struct node* next;

    };

    struct node* f()

    {

    }

    也是可以的。

    这句是关键:

    我们可以用struct tagMyStruct varName来定义变量,但要注意,使用tagMyStruct varName来定义变量是不对的,因为struct 和tagMyStruct合在一起才能表示一个结构类型。

    展开全文
  • 此时Bit这个结构变量就开始引用了,就要引用了,引用lchild,形成的结果就是Bit.lchild.lchild.......所以此结构体就无休止的进行下去。显然是不对的,这地方就很好的运用了指针类型的作用,达到一个自身引用的作用...

    学习数据结构的过程中经常有对一种数据存储结构的描述,而在描述中运用的都是结构体。结构体理解上是非常好理解的。但是放在数据结构中看多了似乎感觉理解起来得绕个弯儿。而查看相关的数据结构来说,经常性会看到结构体里面的成员是指向结构体的指针类型。说起来比较拗口,看一个二叉树的存储结构


    就当当上面一个二叉树结构的表示,我们来分析:

    (1)首先运用了typedef给这个结构体取了一个”别名“

    (2)*lchild与*rchild,从上面来看,毋庸置疑是一个指针类型。关键是指向什么?
    指向的是struct BiTNode类型的数据。

    这地方就涉及到一个很重要的知识点:一个指针类型的成员可以指向其他类型的结构体数据,也可以指向自己所在的结构体类型的数据。

    二叉树的每个结点的数据类型的结构是不是都是一样的,都是struct BiTNode类型的,而不管事左孩子指针还是右孩子指针都是指向他们的孩子(孩子还是与双亲的结点结构一样,就是同一种结构体类型的数据)

    (3)*BiTree什么意思?

    它是不是跟struct BiTNode *BiTree的意思一样:指向结构体变量的指针


    扩展:其实上面(2)说的就是结构体的自引用。其实自引用用指针是非常指的考究的一个问题。

    我们不用指针:

    假设 struct BiTNode Bit;此时Bit这个结构变量就开始引用了,就要引用了,引用lchild,形成的结果就是Bit.lchild.lchild.......所以此结构体就无休止的进行下去。显然是不对的,这地方就很好的运用了指针类型的作用,达到一个自身引用的作用。

    展开全文
  • 先进行文章的引用 word添加参考文献可以参照这里: https://jingyan.baidu.com/article/e6c8503c1a7ed2e54f1a18fd.html 由于我这里对文章的交叉引用已经做好,但是在进行参考文献的排序时,发现无法把参考文献的顺序...
  • 结构体的自引用及相互引用

    千次阅读 2017-12-04 17:25:25
    在用C来实现数据结构以及部分算法时,经常用到结构体,比如实现树以及树的子节点时,就需要该结构体包含自身类型的成员变量。而最近在研究OC的匿名函数实现时,也涉及到了...故简单总结一下C语言结构体的自引用语法。
  • 几个主流网站系统的引用结构

    千次阅读 2008-10-06 19:15:00
    引用结构图描述了一个系统中各个部分的关联性:哪个文件与那个文件相关联、哪个系统是另一个系统的子系统。在研究一个系统之前,最好先把它的引用结构图画出来,这将非常有用。Federico Cargnelutti为我们带来了几个...
  • 对Java对象序列化操作时,发现JSON(使用阿里巴巴的FastJSON组件)数据中,包含“$ref”结构数据; 这是为了避免触发 StackOverflowError 错误而做的处理。 第一种解决方法是,关闭FastJSON的引用检测。(不建议...
  • python 多层结构目录之间包的引用问题
  • C语言中结构体 自引用 和 相互引用

    万次阅读 2011-01-27 11:52:00
    Technorati 标签: C语言,结构体,自引用,相互引用,self reference,mutual reference 结构体的自引用(self reference),就是在结构体内部,包含指向自身类型结构体的指针。 结构体的相互引用(mutual reference),...
  • 如何理解数据结构中的引用参数 &

    千次阅读 多人点赞 2016-03-29 20:02:54
    在数据结构的课程中,以后只要发现参数中有&符号,它就是双向传递,即既有输入又有输出,可以把它理解成全局量,但全局量在整个系统的所有模块都起作用,&只在定义的函数(模块)中起作用,可以理解为“局部的全局量...
  • Python使用import关键字可以引入自定义的包,对于多层目录结构的包
  • 点击进入_更多_Java千百问1、存放基本类型...java的数组中可以存放引用类型。 存放引用类型的内存分布相比存放基本类型相对复杂。来看一段存储基本类型的程序:public class TestPrimitiveArray { public static void
  • 点击进入_更多_Java千百问1、数组和普通对象的引用变量有什么区别了解什么是数组看这里:java中的数组是什么 对于java的数组来说,只有类型兼容(即属于同一数据类型体系且遵守优先级由低到高原则),才能将数组引用...
  • 在使用Gradle的时候,难免会遇到存在很多Project构成一个multiple project 的开发代码结构。...这两个项目都是基于Eclipse,项目结构如下所示,其中 JavaGradleTest 会引用 JavaGradleTest2 中的AP
  • 关于结构体的自引用问题

    千次阅读 2018-03-09 10:01:33
    在一个结构内部包含一个类型为该结构本身的成员是否合法呢?(注意注意)举上一个很简单但是很有说明度的例子:例:struct SELF_REFL{ 这个是(错误) int a; struct SELF_R...
  • 记得以前我们刚上数据结构,创建二叉树的时候,void CreateBiTree(BiTree &T);参数传递的是一个指向结构体指针的引用,有一个人问过老师,他说要改变值必须要用引用,我感觉他这里根本就没跟我们讲清楚,为...
  • 数据结构框架 引用链接 数据结构知识点 绪论 线性表 树 图 查找 排序
  • 结构

    千次阅读 2019-10-02 20:55:35
    引用http://106.13.124.230/index.php/2019/10/02/z4/ 将ISA转换为对应的实现的具体组织称为"微结构" 每种处理器都有自己的微结构 同一种构架,例如现在很多处理器都实现了x86的ISA结构,但每个处理器的实现方式...
  • 结构体的自引用(或者说自身嵌套吧)

    万次阅读 多人点赞 2012-05-21 23:45:40
    晚上学习简单的led驱动程序编写的时候看到链表的实现。在结构体中再一次定义了这个结构体类型的成员...当一个结构体中想引用自身的结构时,是可以的,不过要注意用法。下面第一种是错误的,即我刚开始想象的那样子。第
  • ES根据数据结构自动创建索引

    千次阅读 2018-11-26 15:52:56
    注意用标准的put方式生成结构,如果用post类型的话会把索引结构里的Date转成Text类型 二、直接根据数据生成索引用post 三、curl命令生成索引 curl命令指定type类型创建: 创建索引 curl -XPUT '...
  • 数据结构分别为逻辑结构、(存储)物理结构和数据的运算三个部分。 为什么要学数据结构? 首先,因为数据结构作为计算机专业的专业基础课程,是计算机考研的必考科目之一,如果打算报考计算机专业的研究生,你...
  • 引用,软引用,弱引用

    千次阅读 2018-05-25 14:10:39
    一、软引用和弱引用的用法软引用(SoftReference)的含义是,如果一个对象只具有软引用,而当前虚拟机堆内存空间足够,那么垃圾回收器就不会回收它,反之就会回收这些软引用指向的对象。弱引用(WeakReference)与软...
  • 链式存储结构即链式结构简单介绍

    千次阅读 2016-08-15 12:35:56
    链式结构简单介绍链式结构是一种数据结构,学名链式...使用对象引用变量来创建对象间的链接。它不要求逻辑上相邻的元素在物理位置上也相邻。因此它没有顺序存储结构所具有的弱点,同时也失去了顺序表可随机存取的优点。
  • 首先呢,结构是一些值的集合,这些值称为成员变量,结构的每个成员变量可以是不同类型的变量。 一般的声明 struct Book { char name[100]; //书名 float price; //价格 }b1,b2; //全局变量 struct Book b3; ...
  • 数据结构课上笔记1

    万次阅读 多人点赞 2018-09-11 12:47:54
    第一节课复习了c语言的一些知识,并简单介绍了数据结构这门课程。   1、引用和函数调用: 1.1引用:对一个数据建立一个“引用”,他的作用是为一个变量起一个别名。这是C++对C语言的一个重要补充。 用法很简单...
  • 可能看起来有点枯燥,但引用是在JNI中最容易出错的一个点,如果使用不当,容易使程序造成内存溢出,程序崩溃等现象。所以讲得比较细,有些地方看起来可能比较啰嗦,还请轻啪!下一篇文章会写一个在Andro
  • Java数据结构和算法(一)——开篇

    万次阅读 多人点赞 2014-09-15 07:03:40
    看的是——《Java数据结构和算法》一书,作者Robert Lafore。 目录 1)数据结构算法有什么用? 2)技术与通俗 3)驱动力学习 1)数据结构算法有什么用? 当你用着java里面的容器类很爽的时候,你有没有想过,怎么...
  • 这句已经更改了链表结构,这个时候free§ (P = L->next) 跟原链表已经没有关系了 传入的参数会被赋值一个副本,此时函数内使用这个参数,实际上在使用一个副本,不会修改原始传入,但是用引用时修改的就是原始传入了...
  • 为了解决内存操作不灵活这个问题,可以采用软引用等方法。 在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 就像在日常...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,187,142
精华内容 474,856
关键字:

自引用结构