2016-02-14 25 views
3
struct point { 
    int x; 
    int y; 
}; 

main() { 
    struct point a; 
    a.x = 5; 
    a.y = 10; 
    printf("%d %d", a.x, a.y); 
} 

輸出:如何在C中動態添加結構成員?

5 10 

在這裏,如果我想動態添加INT相同的結構的構件(int z)。 程序是什麼?

我曾嘗試:

struct point { 
    int x; 
    int y; 
}; 

struct newpoint { 
    struct point a; 
    int z; 
}; 

我已經嘗試了上述步驟,通過它,我們增加了一個新成員和老結構point新結構newpoint。但這不是我想要的,我想動態添加新成員相同的結構。我在面試中得到了這個問題。

+1

你不能添加成員,但你可以創建一個結構數組,並改變數組的大小。 – ryyker

+0

可能的重複:https://stackoverflow.com/questions/6187908/is-it-possible-to-dynamically-define- a-struct-in-c –

回答

3

問你這個問題的採訪者已經把你置於一個陷阱。

這是不可能的「動態定義一個struct」在C.這是可以做到的「其他語言鴨打字,例如JavaScript中,但C結構的編譯時定義,並作爲靜態的,因爲它得到。

+0

如果他在運行時創建一個C文件,並將其編譯爲庫並動態加載,他可以動態創建結構,它是否正確?@Amit –

+0

@ParhamAlvani - 這將無助於「主「應用程序將不知道」動態「結構的結構,並將不能int通過標識符與其成員進行交流,只是通過內存補償來實現,這與分配大量內存一樣有用。 – Amit

+0

@ParhamAlvani:通過這種不必要的極端措施,您可以動態創建庫可以使用的結構。但不是現有的程序可以使用。無論哪種方式,如果在「動態」的含義內包括「編寫和編譯全新程序」,則可以擴展「動態定義」過去的突破點的定義。 –