如何在c中使用struct?

时间:2011-11-05 22:10:50

标签: c++ c pointers struct free

这是我的代码:

struct Point
{
    int i;
    int j;
};

int main(int argc, char *argv[])
{
    int n = atoi(argv[1]);
    int a;
    int b;
    for(a = 0; a < n; a++)
    {
        for(b = a+1; b < n; b++)
        {
            struct Point *data = (struct Point *) malloc(sizeof(struct Point));
            data.i = a;
            data.j = b;
            // do something here
            free(data);
        }
    }

    return 0;
}

我在data.i = a;data.j = b;收到错误:

error: request for member 'i' in something not a structure or union
error: request for member 'j' in something not a structure or union

如何解决此错误?

另外,我应该在free()之后使用malloc(sizeof(struct Point))吗?

3 个答案:

答案 0 :(得分:4)

data是一个指针。您必须说data->i等。只有在不再需要数据结构时才调用free()

答案 1 :(得分:2)

data是指向结构的指针,而不是实际的结构。您应该使用data->i代替。

是的,如果你malloc()是一个结构,那么当你完成它时你应该free()

答案 2 :(得分:0)

除了上面的答案,还有一点解释:

你有一个指向结构的指针。首先,您应该使用星号运算符取消引用它,然后您可以使用它。 “ - &gt;” operator是“* v”的缩写形式。其中v是指向结构的指针。因此,data->i等同于*data.i