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

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

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

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

我对这两者之间的确存在疑问

我是初学者

第一个例子主要用于链表

指向结构节点和自引用指针的指针是一回事吗?

请参阅

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

  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); 

我希望有所帮助。

从概念上讲,差别很小。

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

指向结构节点和自引用指针同样的事情

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

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

作为程序员(这意味着 ),没有区别,并且这些术语不提供任何额外的含义。

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

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

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

这两个指针之间没有区别。

使用的可能差异取决于上下文, 但仍不适用于它们指向相同类型结构的指针的性质,因此在赋值,阅读和算术方面经历相同的规则。