0

如果我有:

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代码的链接):代码

类型定义在:类型

4

2 回答 2

0

你会得到垃圾。为了使指针算法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将毫无用处。

于 2013-09-27T06:08:19.773 回答
-1

ptr[i]将指向 的i第 th 指针ptr。假设ptr有一行i指针,这些指针被假定指向 type 的元素X

于 2013-09-27T06:09:05.623 回答