这是我的代码:

#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/

10-12 03:11