C - 指向指针的索引

时间:2013-09-27 06:07:22

标签: c pointers

如果我有:

struct X {
  int a;
  struct X* next;
}

struct X** ptr;

ptr用struct X的地址和每个struct X的地址初始化 接下来指向另一个结构X.使用

获得什么
ptr[i] // where i is unsigned int

以下是我的问题的来源 :(它是来自selinux的代码的链接):code

类型定义于:types

2 个答案:

答案 0 :(得分: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将毫无用处。

答案 1 :(得分:-1)

ptr[i]将指向i的{​​{1}}指针。假设ptr有一行ptr指针,假设它们指向i类型的元素。