簡體   English   中英

使用枚舉變量定義一個數組作為數組大小

[英]Define an array with enum variable as array size

將枚舉變量定義為數組大小的數組意味着什么?

例如,我有以下代碼:

typedef enum
{
  D_ROM_RDE_GROUP_0 = 0x0,
  D_ROM_RDE_GROUP_1,   

  D_ROM_RDE_MAX_GROUPS

}E_ROM_RDE_GROUPS;

U_08 pPlaneCopy[D_ROM_RDE_MAX_GROUPS];

我不明白......

謝謝您的幫助。

首先要記住的是枚舉值是編譯時常量。 另一件事是枚舉值(除非初始化為特定值)增加。 因此,在您的情況下, D_ROM_RDE_GROUP_0等於0D_ROM_RDE_GROUP_1等於1D_ROM_RDE_MAX_GROUPS等於2

這意味着當你聲明數組時,它基本上是相同的

U_08 pPlaneCopy[2];

在您的情況下,枚舉值D_ROM_RDE_MAX_GROUPS實際上是一個整數值:2。因此,您定義了一個包含兩個元素的數組。 索引可能會訪問這兩個元素:D_ROM_RDE_GROUP_0和D_ROM_RDE_GROUP_1

這是一種技術,通常用於定義一個與枚舉中的值相關的數組。 舉個簡單的例子:

enum  {
   ZERO, 
   ONE,
   TWO,
   THREE,
   MAX_VALUE //has value of 4
};

因為枚舉元素的自然值從零開始,並且對每個成員遞增1,所以最終值對於初始化數組總是很有用,對於許多元素來說,它們的任何類型( stringsintsfloats等)都是相等的達到最終價值。 例如。

int numbers[MAX_VALUE];//an array with 4 elements
int i;

然后,您可以使用MAX_VALUE來保證在循環中處理數組,而不會超出數組的范圍,例如。 就像是:

for(i=0;i<MAX_VALUE;i++)//will loop 4 times
{
    numbers[i]=i;//assigned a value equal to its namesake, for i < MAX_VALUE
}  

鑒於此解釋,原始帖子中的枚舉只是初始化為值2:

U_08 pPlaneCopy[D_ROM_RDE_MAX_GROUPS];  

是相同的

U_08 pPlaneCopy[2];

如果沒有明確指定,則自動為每個枚舉元素分配無符號整數。 因此,使用枚舉聲明, D_ROM_RDE_GROUP_0等於0D_ROM_RDE_GROUP_1等於1D_ROM_RDE_MAX_GROUPS等於2。

因此,宣言

U_08 pPlaneCopy[D_ROM_RDE_MAX_GROUPS];

相當於

U_08 pPlaneCopy[2];

這意味着,您聲明了一個數組,其中一個U_08元素對應於E_ROM_RDE_GROUPS每個可能值,假設D_ROM_RDE_MAX_GROUPS不是另外使用的值。

暫無
暫無

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

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