我创建了一个结构
typedef struct t{
int top;
int value;
}s;
和另一个结构
typedef struct y{
int top1;
s **p
}z;
z *p1;
通过 malloc 创建一个 block
p1 = (z*) malloc(sizeof(z));
p1->p = (s**) malloc(10 * sizeof(s));
我尝试通过索引 s 结构化 block
p1->p[4]->top;
但是我得到了错误。有没有办法在 C 中将指针索引到指针类型
最佳答案
用单指针寻址。
typedef struct y{
int top1;
s *p; //Single pointer only
}z;
z *p1;
p1 = malloc(sizeof(z)); //Don't cast...
p1->p = malloc(10 * sizeof(s));
//And then:
p1->p[4].top;
如果你还想要双指针,那么:
typedef struct y{
int top1;
s **p;
} z;
z *p1;
size_t i;
p1 = malloc(sizeof(z)); //Create z structure object
p1->p = malloc(10 * sizeof(*p1->p)); //Create array of pointers to objects
//Now fill that array with your objects
for (i = 0; i < 10; i++) {
p1->p[i] = malloc(sizeof(*p1->p[i]));
}
//Now access to property as:
p1->p[4]->top; //Do something.
第二个选项不太可取,但取决于您,因为对连续 10 个对象执行单个 malloc
比对单个对象执行 10 倍和第 11 次初始化指针基数组更有效。
关于c - 如何索引包含指向结构指针的指针的结构,该结构是 malloc block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44531866/