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

时间:2013-08-26 19:41:29

标签: c algorithm pointers structure

结构中的自引用指针和结构指针之间有什么区别?

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

  2. 他们的使用方式有何不同?

  3. 我对这两个

    之间存在疑问

    我是初学者

    第一个例子主要用于链表

    指向结构节点和自引用指针的指针是否相同?

    please see

    see-programming.blogspot.in/2013/05/chain-hashing-separate-chaining-with.html这里我们使用struct hash * hashTable作为数组..how ??我们可以用* pt

    做同样的事吗

5 个答案:

答案 0 :(得分:4)

  1. 它们属于同一类型。他们的行为完全相同。

    一些示例用法:

    // 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;
    
  2. 使用差异:

    • 只有一个pt变量。

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

    在链表的上下文中,只有一个头指针,因此pt就是它。
    但是每个节点都指向下一个节点,因此应该使用next

  3. 将指针用作数组?

    是的,可以使用ptnext来完成此操作。

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

    如果你想将它用作一个数组(或者只是一般使用指针),你只需要确保不要尝试访问你没有为其分配内存的元素(使用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);
    
  4. 我希望有所帮助。

答案 1 :(得分:1)

从概念上讲,差别很小。

  1. next是其指向的相同结构的成员。 pt不是它所指向的结构的成员。
  2. 以类似的方式使用它们,但要使用next您有一个现有的struct abc,并且pt可以直接使用。请考虑:
  3.     myABC.next= &myOtherABC ;
        pt= &myOtherABC ;
    
      

    是指向结构节点和自引用指针同一事物的指针

    他们是,他们不是。取决于观点。他们因为他们都指向一个结构。它们,因为pointer to structure可以指向任何结构,作为变量,它可以是参数,局部变量,另一个struct的成员等。但是self referential pointer必须是struct的成员,并且指向其所属的struct

答案 2 :(得分:1)

唯一的区别适用于编写编译器的人。这是因为自引用指针在完全声明之前引用自身。因此,编写编译器的人必须处理这种特殊情况。

作为程序员(意为),没有任何区别,这些条款不提供任何额外的含义。

答案 3 :(得分:0)

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

  2. 从pt你可以访问下一个,因为pt指向包含next的结构。但从下一个你无法访问pt。

    对于链表,你必须要理解,该列表包含在开头的1个元素,而这个元素知道如何到达列表的下一个元素,它是下一个指针的目标

答案 4 :(得分:0)

这两个指针之间存在差异。

使用上可能存在的差异取决于上下文,但仍然不适用于它们指向同一类型结构的性质,因此在分配,阅读和分配方面都遵循相同的规则。码运算。