簡體   English   中英

當定義一個由成員組成的結構時,是否為該結構類型的每個變量都創建了這些成員?

[英]When defining a struct full of members, are these members created for each variable of this struct type?

所以有一個代碼:

struct ACDC
{
  double in, out, A, B, C;
};

struct VALUE
{
  struct ACDC I, V;
};

struct VALUE motor1, motor2, DC;

當我聲明該結構的一些變量時,例如motor1,motor2,DC1,DC2,我不需要為所有變量使用所有成員。 我只需要這樣的東西:

motor1.I.A; motor1.I.B; motor1.I.C;
motor2.I.A; motor2.I.B; motor2.V.A; motor2.V.B;
DC.I.in;
DC.I.out;

所以問題是,是否為變量聲明了其他成員並在創建變量時占用了內存中的空間? 如果是這樣,該怎么做才在第一次調用時創建它們?

謝謝

結構描述內存布局。 當實例化一個實例時,它為整個對象分配內存,而成員名本質上是該分配中的偏移量的助記符,這要求它們在編譯時就已知。

如果需要可選元素,則必須在C ++中使用指針或某些復雜的模板技巧來代替指針。

因為您指定了兩種截然不同的語言(C和C ++),所以我無法給出具體的慣用示例。

但是,您給出的示例看起來像是糟糕/草率的設計,而不是真正需要可變的可選成員資格。

您可能希望將您要解決的問題顯示為一個新問題。

正確的答案取決於情況

如果使用編譯器的高級優化(例如-O2),則除非在某些地方使用了這些變量,否則編譯器將取消這些變量。 否則,將為它們分配內存。

關於單個struct成員,是的,該結構將作為一個整體而不是按成員分配(也請檢查填充以更好地理解)。

暫無
暫無

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

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