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个元素,并且该元素知道如何到达列表的下一个元素,这是下一个指针的目标,这两个指针之间没有差异
用法上的可能差异取决于上下文,但仍然不适用于它们都是指向相同类型结构的指针,因此遵循相同规则的性质