如果我有:
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
答案 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
类型的元素。