我有以下结构,包含两个整数值。
struct data
{
int v1;
int v2;
};
/*some functions on struct data*/
struct data* create(int v1,int v2);
void printData(struct data *d);
现在我有以下结构vec,它会像列表一样,这个结构有大小和指向数据类型结构指针的指针。
struct vec
{
int size;
struct data **array;
};
/*possible functions for vec structure*/
struct vec* createVec();
void addFront(struct vec *v, struct data* dta);
由于我是指针的初学者,我想澄清并确认我的理解。
我知道这不是最好的数据结构等,这是严格要做的,以帮助我澄清我对指针的理解。
答案 0 :(得分:1)
为了帮助您澄清您心中的一切(以及您的代码),您可以执行以下操作:
typedef struct data* data_ptr
然后,struct vec可以写成
struct vec
{
int size;
data_ptr *array;
};
因此,数组确实是指向数据结构的指针。 然而,数组是一个误导性的名称,因为您可以通过列表等其他数据结构获得您想要的内容。 如果您决定坚持使用数组,那么您应该正确分配内存并在结尾处释放它,结构看起来就像您绘制的那样。
因此,(在正确初始化之后),array[i]
将为您提供指向第i个数据结构的指针,array[i]->v1
应该为您提供第i个结构的v1值。 / p>
答案 1 :(得分:1)
您的可视化效果很好。
如果我们查看您的图表,我们希望vec->array[0]
(数组的第一个元素)是指向struct data
的指针,对吗?
数组索引操作([0]
)将取消引用第一个元素,这意味着从该类型中删除指针。
因此,如果array
的类型为struct data **
,则array[0]
的类型将为struct data *
(注意少*
},这就是我们期待。