如果我有:
struct X {
int a;
struct X* next;
}
struct X** ptr;
ptr 用 struct X 的地址初始化,每个 struct X 的 next 指向另一个 struct X。使用会得到什么
ptr[i] // where i is unsigned int
这是我的问题的来源:(它是selinux代码的链接):代码
类型定义在:类型
你会得到垃圾。为了使指针算法p[i]
起作用,您需要将对象(在本例中为指向结构的指针)一个接一个地放在内存中(在数组中)。
在您的情况下,您需要遵循next
指针i
时间。
struct X *p = *ptr;
for (j = 0; j < i; ++j) p = p->next;
/* now p points to the i-th struct */
如果结构实际上在一个数组中,这相当于
struct X *p = (*ptr)[i];
但在那种情况下,那next
将毫无用处。
ptr[i]
将指向 的i
第 th 指针ptr
。假设ptr
有一行i
指针,这些指针被假定指向 type 的元素X
。