[英]Pointer to Pointer to a Structure
我有以下包含两个整数值的结构。
struct data
{
int v1;
int v2;
};
/*some functions on struct data*/
struct data* create(int v1,int v2);
void printData(struct data *d);
现在,我具有以下结构,该结构有点像列表,并且该结构具有大小和指向类型数据结构的指针。
struct vec
{
int size;
struct data **array;
};
/*possible functions for vec structure*/
struct vec* createVec();
void addFront(struct vec *v, struct data* dta);
由于我是指针的初学者,因此我想澄清和确认我的理解。
我知道这不是最大的数据结构,因此将严格执行此操作以帮助我阐明对指针的理解。
为了帮助您弄清思路(和代码),可以执行以下操作:
typedef struct data* data_ptr
然后,struct vec可以写成
struct vec
{
int size;
data_ptr *array;
};
因此,数组确实是指向数据结构的指针。 但是,数组的名称具有误导性,因为您可以通过列表等其他数据结构获得所需的内容。如果决定坚持使用数组,则应正确分配内存并在最后释放内存,然后结构看起来像你所画的。
因此,(在正确的初始化之后), array[i]
将为您提供第i个数据结构的指针,而array[i]->v1
应为您提供第i个结构的v1值。
您的可视化效果很好。
如果我们看一下您的图,我们期望vec->array[0]
( vec->array[0]
的第一个元素)是指向struct data
的指针,对吗?
数组索引操作( [0]
)将取消引用第一个元素,这意味着从类型中删除指针。
因此,如果array
的类型是struct data **
,则array[0]
的类型将是struct data *
(注意少一个*
),这就是我们所期望的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.