2014-02-14 65 views
1

可以說我有這個數組遍歷每個選項

int array[] = {0x00, 0x00, 0x00}; 

而且我想在這個陣列中每一個可能的變化執行特定功能(可以說陣列中的每個變量爲0x00的最小值和最大值爲0xA)。

int array[] = {0x00, 0x00, 0x00}; 
*Some Loop* 
{ 
    someFunction(array); 
} 

換句話說,我想要做的someFunction上可能的每個排列(從{0×00,0×00,0×00}到{是0xA,是0xA,是0xA}),但我無法這樣做,所以我在尋求幫助。

我希望我解釋得很好,提前致謝!

+7

C++和C是不同的語言,答案將在這個非常不同案件。請只使用一個標籤。 – aschepler

+2

你正在編寫C代碼或C++嗎?它們不是相同的語言,並且不應該自動交叉標記。 – crashmstr

+1

[Oliver](https://stackoverflow.com/a/21787854/1072468)下面的答案是非常好的C或C++代碼,所以不要這麼掛斷,mkay? –

回答

5
for(int i=0x00;i<=0xA;++i){ 
    for(int j=0x00;j<=0xA;++j){ 
     for(int k=0x00;k<=0xA;++k){ 
      someFunction(i,j,k); 
     }   
    } 
} 
+1

我會改變循環邊界到'0x0A'來匹配OP的邊界條件,否則這將工作得很好。 –

+0

@schighschagh沒有注意到,它完成了。 – OlivierLi

+1

由於0x0A是有效的數組成員,因此將循環編輯爲「<=」。 – mah

2

一個更通用的解決方案會是這樣的

someRecursiveFunction(int *arr, int curbyte, int min, int max) 
{ 
int n; 
if(curbyte == 0) someFunction(arr); 
else for(n = min; n <= max; n++) { 
    arr[curbyte-1] = n; 
    someRecursiveFunction(arr, curbyte-1, min, max); 
} 
} 

,然後在你的主:

someRecursiveFunction(array, 3, 0, 0xA);