这是我的代码:
#include <stdio.h>
#define DEFAULT_CAPACITY 5
typedef struct Vector
{
int items[DEFAULT_CAPACITY];
int size;
} *VectorP;
// I am not allowed to change this struct definition.
int main()
{
VectorP *p;
p = (VectorP *) malloc(DEFAULT_CAPACITY * sizeof(VectorP));
if (p == NULL)
{
fprintf(stderr, "Memory allocation failed!\n");
exit(1);
}
//The problem is that I can't access instance of the vector this way ->
p->size = 0;
}
在网上搜索时,我发现这与
VectorP
已经是一个指针有关,我无法更改它,因为我的教授希望这样做。我该怎么解决? 最佳答案
这些行是错误的:
VectorP *p;
p = (VectorP *) malloc(DEFAULT_CAPACITY * sizeof(VectorP));
你需要用这个代替:
VectorP p;
p = (VectorP) malloc(DEFAULT_CAPACITY * sizeof(struct Vector));
或者,如果您只想分配1个
Vector
对象而不是多个Vector
对象的数组:VectorP p;
p = (VectorP) malloc(sizeof(struct Vector));
关于c - typedef的struct c,如何访问在typedef中声明为指针的struct实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25675899/