指向结构和自我指针的指针
结构中的自引用指针和结构指针之间有什么区别?
struct abc { int data; struct abc *next; } struct abc *pt;
-
*next
和*pt
之间有什么区别? -
他们的使用方式有何不同?
我对这两者之间的确存在疑问
我是初学者
第一个例子主要用于链表
指向结构节点和自引用指针的指针是一回事吗?
请参阅
see-programming.blogspot.in/2013/05/chain-hashing-separate-chaining-with.html这里我们使用struct hash * hashTable作为数组..how ?? 我们可以用* 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);
我希望有所帮助。
从概念上讲,差别很小。
-
next
是它指向的相同结构的成员。pt
不是它指向的结构的成员。 - 它们以类似的方式使用,除了要使用
next
你有一个现有的struct abc
,并且pt
可以直接使用。 请考虑:
myABC.next= &myOtherABC ; pt= &myOtherABC ;
指向结构节点和自引用指针同样的事情
他们是,他们不是。 取决于观点。 他们是因为他们都指向一个结构。 它们不是因为pointer to structure
的pointer to structure
可以指向任何结构,而作为变量,它可以是参数,局部变量,另一个struct
的成员等。但是self referential pointer
必然是struct
和点的成员它是同一struct
的成员。
唯一的区别适用于编写编译器的人。 这是因为自引用指针在它自身被完全声明之前引用它自己。 因此编写编译器的人必须处理这种特殊情况。
作为程序员(这意味着你 ),没有区别,并且这些术语不提供任何额外的含义。
-
它们是相同的类型,但它们不包含相同的值
-
从pt你可以访问下一个因为pt指向包含next的结构。 但从下一个你不能访问pt。
对于链表,你必须要理解,列表包含在开头的1个元素,而这个元素知道如何到达列表的下一个元素,它是下一个指针的目标
这两个指针之间没有区别。
使用的可能差异取决于上下文, 但仍不适用于它们指向相同类型结构的指针的性质,因此在赋值,阅读和算术方面经历相同的规则。