C 指向结构的指针和自指针

C 指向结构的指针和自指针,c,algorithm,pointers,structure,C,Algorithm,Pointers,Structure,结构中的自引用指针和指向结构的指针有什么区别 struct abc { int data; struct abc *next; } struct abc *pt; *next和*pt之间有什么区别 它们在使用上有什么不同 我真的对这两件事感到怀疑 我是初学者 第一个示例主要用于链表 指向结构节点的指针和自引用指针是一样的吗 请参阅-programming.blogspot.in/2013/05/chain-hashing-separate-ch

结构中的自引用指针和指向结构的指针有什么区别

    struct abc
    {
    int data;
    struct abc *next;
    }
    struct abc *pt;
  • *next
    *pt
    之间有什么区别

  • 它们在使用上有什么不同

  • 我真的对这两件事感到怀疑

    我是初学者

    第一个示例主要用于链表

    指向结构节点的指针和自引用指针是一样的吗


    请参阅-programming.blogspot.in/2013/05/chain-hashing-separate-chaining-with.html这里我们使用struct hash*hashTable作为数组..如何??我们能用*pt做同样的事情吗

  • 它们属于同一类型。它们的行为方式完全相同。

    一些示例用法:

    // declare 2 structs
    struct abc s1;
    struct abc s2;
    
    // point pt to s1
    pt = &s1;
    
    // point s1.next to s2
    s1.next = &s2;
    
    // access pt->data
    int a = pt->data;
    
    // access s1.next->data
    int a = s1.next->data;
    
  • 用法差异:

    • 只有一个
      pt
      变量

    • 对于每个
      struct abc
      变量,都有一个
      next
      变量

    在链表的上下文中,只有一个头指针,因此应该是
    pt

    但是每个节点都指向下一个节点,因此应该使用
    next

  • 使用指针作为数组?

    是的,这可以通过
    pt
    next
    完成

    指针只指向内存中的地址。在该位置可以有任意数量的结构相互跟随

    如果您想将其用作数组(或者通常只使用指针),您只需确保不尝试访问未分配内存的元素(例如使用
    malloc
    ),并在使用后释放内存(如果使用
    malloc

    数组的一些示例用法:

    // declare a struct
    struct abc s1;
    
    // make an array of size 10
    struct abc *a1 = malloc(10*sizeof(struct abc));
    
    // give the 4th element a new value
    a1[4] = s1;
    
    // free the memory
    free(a1);
    
  • 我希望这有点帮助

  • 它们属于同一类型。它们的行为方式完全相同。

    一些示例用法:

    // declare 2 structs
    struct abc s1;
    struct abc s2;
    
    // point pt to s1
    pt = &s1;
    
    // point s1.next to s2
    s1.next = &s2;
    
    // access pt->data
    int a = pt->data;
    
    // access s1.next->data
    int a = s1.next->data;
    
  • 用法差异:

    • 只有一个
      pt
      变量

    • 对于每个
      struct abc
      变量,都有一个
      next
      变量

    在链表的上下文中,只有一个头指针,因此应该是
    pt

    但是每个节点都指向下一个节点,因此应该使用
    next

  • 使用指针作为数组?

    是的,这可以通过
    pt
    next
    完成

    指针只指向内存中的地址。在该位置可以有任意数量的结构相互跟随

    如果您想将其用作数组(或者通常只使用指针),您只需确保不尝试访问未分配内存的元素(例如使用
    malloc
    ),并在使用后释放内存(如果使用
    malloc

    数组的一些示例用法:

    // declare a struct
    struct abc s1;
    
    // make an array of size 10
    struct abc *a1 = malloc(10*sizeof(struct abc));
    
    // give the 4th element a new value
    a1[4] = s1;
    
    // free the memory
    free(a1);
    

  • 我希望这能有所帮助。

    从概念上讲,差别很小

  • next
    是它所指向的相同结构的成员
    pt
    不是它所指向的结构的成员
  • 它们的使用方式类似,除了要使用
    next
    您有一个现有的
    struct abc
    ,并且可以直接使用
    pt
    。请考虑:
  • 指向结构节点的指针和自引用指针是一样的吗


    他们是,他们不是。这取决于你的观点。它们都是,因为它们都指向一个结构。它们是而不是,因为指向结构的
    指针可以指向任何结构,并且作为变量,它可以是参数、局部变量、另一个
    结构的成员
    ,但是
    自引用指针
    必须是
    结构的成员
    ,并且指向它所属的同一
    结构

    从概念上讲,几乎没有什么区别

  • next
    是它所指向的相同结构的成员
    pt
    不是它所指向的结构的成员
  • 它们的使用方式类似,除了要使用
    next
    您有一个现有的
    struct abc
    ,并且可以直接使用
    pt
    。请考虑:
  • 指向结构节点的指针和自引用指针是一样的吗

    他们是,他们不是。这取决于你的观点。它们都是,因为它们都指向一个结构。它们是而不是,因为指向结构的
    指针可以指向任何结构,并且作为变量,它可以是参数、局部变量、另一个
    结构的成员
    ,但是
    自引用指针
    必须是
    结构
    的成员,并且指向它所属的同一
    结构

  • 它们是相同的类型,但不包含相同的值

  • 从pt可以访问next,因为pt指向包含next的结构。但从下一步开始,您无法访问pt

  • 对于链表,您必须了解,列表包含在起始1元素,并且该元素知道如何到达列表的下一个元素,这是下一个指针的目标

  • 它们是相同的类型,但不包含相同的值

  • 从pt可以访问next,因为pt指向包含next的结构。但从下一步开始,您无法访问pt


  • 对于链表,您必须了解,列表包含在开始的1个元素,并且该元素知道如何到达列表的下一个元素,这是下一个指针的目标,这两个指针之间没有差异

    用法上的可能差异取决于上下文,但仍然不适用于它们都是指向相同类型结构的指针,因此遵循相同规则的性质