簡體   English   中英

如何在C中使用struct?

[英]How to use struct in c?

這是我的代碼:

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.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

如何解決此錯誤?

另外,我應該在malloc(sizeof(struct Point))之后使用free() malloc(sizeof(struct Point))嗎?

data是一個指針。 您必須說出data->i等。僅在不再需要數據結構時才調用free()

data是指向結構的指針,而不是實際的結構。 您應該改為使用data->i

是的,如果您malloc()一個結構,那么完成后就應該free()它。

除了以上答案外,還有一些解釋:

您有一個指向結構的指針。 首先,應該使用star運算符取消引用它,然后可以使用它。 “->”運算符是“ * v”的縮寫形式。 其中v是指向結構的指針。 所以你有data->i相當於*data.i

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM